string - perl6 任何类似于用于读取数据的 Racket 方案的字符串端口?

标签 string eval raku

在Racket Scheme中,有一个名为“string port”的数据结构,可以从中读取数据。 perl6 中有类似的东西吗?例如,我想实现这些结果:

my $a = "(1,2,3,4,5)"; # if you read from $a, you get a list that you can use;
my $aList=readStringPort($a);
say $aList.WHAT; # (List)
say $aList.elems; # 5 elements

my $b = "[1,2,3]"; # you get an array to use if you read from it;

my $c = "sub ($one) {say $one;}";
$c("Big Bang"); # says Big Bang

函数 EVAL 并没有完全完成所有任务:

> EVAL "1,2,3"
(1 2 3)
> my $a = EVAL "1,2,3"
(1 2 3)
> $a.WHAT
(List)
> my $b = EVAL "sub ($one) {say $one;}";
===SORRY!=== Error while compiling:
Variable '$one' is not declared. Did you mean '&one'?
------> my $b = EVAL "sub (⏏$one) {say $one;}";

非常感谢!

流水线

最佳答案

EVAL 执行此操作。

您上一个示例中的问题是,双引号字符串 插入$ 变量和{ block 等。为了在字符串文字中表示这些东西,要么用反斜杠转义它们......

my $b = EVAL "sub (\$one) \{say \$one;}";

...或使用非内插字符串文字:

my $b = EVAL 'sub ($one) {say $one;}';
my $b = EVAL Q[sub ($one) {say $one;}];

关于string - perl6 任何类似于用于读取数据的 Racket 方案的字符串端口?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44748100/

相关文章:

java - 定义字符串时在java中无效的转义序列(有效的是\b\t\n\f\r\"\'\\)

php - 如何根据大小 php 修剪字符串

Raku:将字符串发送到子进程的标准输入

php - 使用 eval 从字符串计算数学表达式

raku - 在 for 循环中用 .subst 替换字符串

object - 哈希的代理对象?

java - java字符串中equals和compareto方法的区别

java - 部分字符串匹配

javascript - 如何计算字符串中的某些字符

python - 用于列表反序列化的 Python 'eval' 的安全性