【问题标题】:Why does array "each" do not work anymore in Crystal 1.3.0? What should I use instead?为什么数组“each”在 Crystal 1.3.0 中不再起作用?我应该改用什么?
【发布时间】:2022-01-12 15:04:57
【问题描述】:

下面的代码不打印数组的元素。这是为什么呢?

array = [1, 2, 3]

array.each do |x|
  puts x
end

array.each { |x| puts x }

Crystal Play Output

它曾经在以前的版本中工作。我知道 Crystal 不是 Ruby,但上面的代码在 Ruby 中工作。在 Crystal 中遍历数组的最佳实践是什么?为什么 Crystal 开发人员决定在这种基本场景下让 Crystal 与 Ruby 不兼容?

【问题讨论】:

  • 包括您的问题中使用的版本,尤其是当您声称它在以前的版本中有效时。你现在用的是什么版本?它适用于哪个版本?

标签: crystal-lang


【解决方案1】:

简答:点击右侧框下方的“显示输出”。

运行crystal play 获得的Crystal Playground 本地版本与运行play.crystal-lang.org 的本地版本之间存在明显差异。代码有效,但结果的呈现方式不同。

【讨论】:

  • 谢谢!我认为默认情况下会显示输出。我从来没有想过我必须点击那里。
【解决方案2】:

水晶游乐场由于某种原因无法执行此代码。

不要使用水晶游乐场。目前几乎没用了。

将代码放入文件中并执行:

crystal each.cr

你会看到数组元素。

【讨论】:

  • 似乎对我有用。 play.crystal-lang.org/#/r/clh7
  • 在您的机器上尝试crystal play 并转到http://127.0.0.1:8080/。运行代码,看看是不是不行。
  • 是的,crystal playplay.crystal-lang.org 是完全不同的东西。命名重载非常不幸,可能会导致这种混乱。我不同意crystal play 毫无用处。它工作得很好。也许不是你期望的那样。也就是说,至少在大多数情况下。正常编译器行为存在一些边缘情况和差异,我认为这使其不适合试图理解该语言的新手。尽管这是其主要目的之一。它不是没用的,但您需要了解它的工作原理才能正确使用它。
猜你喜欢
  • 2019-05-26
  • 1970-01-01
  • 2012-04-21
  • 1970-01-01
  • 2021-08-12
  • 2022-08-17
  • 2015-03-27
  • 1970-01-01
  • 2021-05-27
相关资源
最近更新 更多