【问题标题】:Ruby syntax error with declarative concept of using variable [closed]Ruby语法错误与使用变量的声明性概念[关闭]
【发布时间】:2015-11-04 13:22:18
【问题描述】:

我正在尝试在 ruby​​ 中使用反应式编程概念,我创建了两个代码块:

1 命令

a = 5, b = 2
c = a + b
print c #=> 7

a = 2
print c #=> 7

2 声明式

a := 5, b := 2
c := a + b
print c #=> 7

a := 2
print c #=> 4

但是第二个示例对我不起作用并给出以下错误:

d.rb:1: syntax error, unexpected '=', expecting tSTRING_CONTENT or tSTRING_DBEG or tSTRING_DVAR or tSTRING_END
a := 5, b := 2
    ^

请任何人帮助我找出代码中的错误。任何建议将不胜感激。

我知道第二个是伪代码,但让我惊讶的是,得分最高的人却跑题了?第二个代码也可以使用 Reactive Library 执行,而顶级程序员并不知道它。

【问题讨论】:

  • 我不知道你从哪里得到第二个 sn-p,但它只是不正确的 ruby​​ 语法。
  • 你能告诉我这个特性的文档吗?
  • 先生,这是 ruby​​ 2.2 使用的响应式编程方法,请查看zweitag.de/en/blog/technology/…
  • 你应该仔细阅读这篇文章,pseudo-code 中的以下示例显示了两种范式之间的关键区别。

标签: ruby ruby-2.2


【解决方案1】:

:= 不是有效的 Ruby。

错误消息是因为符号由前导冒号表示,所以:example 是一个符号(比较"example" 是一个字符串)。

所以遇到: Ruby 需要一个有效的符号开头字符,可以是...

@$_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz

中间字符可以是...

_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789

最后一个字符可以是……

!_=?ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789

所以= 永远不是有效的符号字符。

您引用的文章显示的是伪代码而不是实际的 Ruby。

【讨论】:

  • 任何其他区分命令式和声明式方法的方法。
  • 我知道第二个是伪代码,但有一件事让我感到惊讶,最高分的人竟然跑题了?第二个代码也可以使用 Reactive Library 执行,顶级程序员不知道它。
  • 你说的是 ReactiveX 吗?它并不能真正适应您尝试运行的伪代码。基本上,这是题外话,因为您误解了 Ruby 的语法。那里有一个很好的基本问题,但措辞很糟糕。而不是“为什么c := a + b 不起作用?”您可能会问“我如何编码c = a + b,以便cab 更改时动态更改?”
  • 能否请您编辑问题而不是偏离主题。
猜你喜欢
  • 2014-09-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多