为什么在Crystal 1.3.0中数组的"each"不再起作用?我应该使用什么代替?

3
下面的代码没有打印出数组的元素。为什么会这样?
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不兼容?


在你的问题中包含使用的版本,特别是当你声称它在以前的版本中工作时。你现在使用的是哪个版本?它在哪个版本中工作过? - virullius
1
https://play.crystal-lang.org/#/r/clh9 ¯_(ツ)_/¯ - virullius
2个回答

4

简短回答:点击右下方框框下面的“显示输出”按钮。

使用 crystal play 命令获得的本地版本的 Crystal Playground 与在 play.crystal-lang.org 上运行的版本之间存在明显的差异。代码可以正常运行,但结果的呈现方式不同。


谢谢!我以为默认就会显示输出结果。从没想过我得点击那里。 - Richard Brason

-3

由于某些原因,水晶编程环境无法执行此代码。

不要使用水晶编程环境。它目前几乎没有用处。

将代码放入文件中并执行以下操作:

crystal each.cr

您将看到数组元素。


对我来说似乎可以工作。https://play.crystal-lang.org/#/r/clh7 - virullius
在您的计算机上尝试运行 crystal play 命令,并转到 http://127.0.0.1:8080/。运行代码以查看其是否无法正常工作。 - Richard Brason
1
是的,crystal play和https://play.crystal-lang.org是完全不同的东西。这种重名是非常不幸的,可能会引起混淆。我不同意crystal play是无用的。它运行得非常好。也许不是你期望的方式。至少在大多数情况下是这样的。我认为有一些边缘情况和与正常编译器行为的差异,这使得它不适合尝试理解语言的新手。尽管这是它的主要目的之一。它不是无用的,但你需要知道它的工作原理才能正确使用它。 - Johannes Müller

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接