为什么Rails可以将`if`用作哈希键,而不能在Ruby中使用

睡觉

在纯Ruby irb中,不能输入{if: 1}该语句不会终止,因为irb认为if不是符号而是if语句的开头。

那么,为什么Rails可以before_filter将if作为参数接受呢?该指南的代码如下:

class Order < ApplicationRecord
  before_save :normalize_card_number, if: :paid_with_card?
end

同样的事情也发生了unless

约格午间

众所周知,IRb的解析器已损坏。(实际上,您遇到的错误已在几个月前报告:错误#12177:在irb控制台中使用if:具有新哈希语法的哈希符号作为符号不起作用。)只需忽略它即可。IRb和Ruby在行为上还存在其他差异,即语义上的差异,而不仅仅是语法上的差异。例如,在顶层定义的方法是隐式的,public而不是private应有的隐式方法。

IRb尝试使用其自己的解析器来解析代码以弄清楚,例如,是否在您点击时将其提交给引擎,ENTER还是在下一行等待您继续执行代码。但是,由于Ruby的语法非常复杂,因此很难正确地对其进行解析,并且众所周知IRb的解析器与Ruby的解析器有所不同。

其他REPL采用不同的方法,例如Pry实际上使用Ruby的解析器而不是其自身的解析器。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么我不能在 ruby 中更新哈希?

来自分类Dev

为什么不能在与其他键的接口中使用枚举作为键

来自分类Dev

当可以在lambda中使用await时,为什么不能在lambda中使用yield呢?

来自分类Dev

当可以在lambda中使用await时,为什么不能在lambda中使用yield呢?

来自分类Dev

在对象中使用“ undefined”作为键会导致将“ undefined”用作键。为什么?

来自分类Dev

为什么常量插值不能在Ruby中使用百分比符号

来自分类Dev

为什么常量插值不能在Ruby中使用百分比符号

来自分类Dev

为什么我不能在 Ruby 中使用带有 `for` 循环的花括号?

来自分类Dev

正则表达式可以在PHP中运行,而不能在Erlang中使用。为什么?

来自分类Dev

正则表达式可以在PHP中运行,而不能在Erlang中使用。为什么?

来自分类Dev

为什么不能在build()中使用context.read,但是可以将Provider.of与listen:false一起使用?

来自分类Dev

在Ruby on Rails中使用键和值创建动态哈希

来自分类Dev

为什么我可以在活动/提要中使用onClick,但不能在对话框片段中使用onClick?

来自分类Dev

为什么我可以在Rc中使用动态调度(dyn MyTrait),而不能在RefCell中使用动态调度?

来自分类Dev

为什么我可以在活动/提要中使用onClick,但不能在对话框片段中使用onClick?

来自分类Dev

为什么我的线性渐变不能在Firefox中使用?

来自分类Dev

为什么不能在分配中使用Unicode字符√和??

来自分类Dev

为什么复数文字不能在clang中使用?

来自分类Dev

为什么不能在字符串内插中使用_?

来自分类常见问题

为什么我不能在Swift中使用let in协议?

来自分类Dev

为什么notifyAll()不能在线程实例中使用?

来自分类Dev

为什么我不能在JCreator中使用JavaFX?

来自分类Dev

为什么不能在`beforeSave`函数中使用`useMasterKey()`?

来自分类Dev

为什么我不能在TRecord中使用Variable?

来自分类Dev

为什么我不能在MacVim中使用`<和`>?

来自分类Dev

为什么我不能在crontab中使用大括号?

来自分类Dev

为什么我不能在pow()函数中使用整数?

来自分类Dev

为什么不能在成员函数中使用这种模式?

来自分类Dev

为什么不能在JavaDoc中使用<abbr>标记?

Related 相关文章

  1. 1

    为什么我不能在 ruby 中更新哈希?

  2. 2

    为什么不能在与其他键的接口中使用枚举作为键

  3. 3

    当可以在lambda中使用await时,为什么不能在lambda中使用yield呢?

  4. 4

    当可以在lambda中使用await时,为什么不能在lambda中使用yield呢?

  5. 5

    在对象中使用“ undefined”作为键会导致将“ undefined”用作键。为什么?

  6. 6

    为什么常量插值不能在Ruby中使用百分比符号

  7. 7

    为什么常量插值不能在Ruby中使用百分比符号

  8. 8

    为什么我不能在 Ruby 中使用带有 `for` 循环的花括号?

  9. 9

    正则表达式可以在PHP中运行,而不能在Erlang中使用。为什么?

  10. 10

    正则表达式可以在PHP中运行,而不能在Erlang中使用。为什么?

  11. 11

    为什么不能在build()中使用context.read,但是可以将Provider.of与listen:false一起使用?

  12. 12

    在Ruby on Rails中使用键和值创建动态哈希

  13. 13

    为什么我可以在活动/提要中使用onClick,但不能在对话框片段中使用onClick?

  14. 14

    为什么我可以在Rc中使用动态调度(dyn MyTrait),而不能在RefCell中使用动态调度?

  15. 15

    为什么我可以在活动/提要中使用onClick,但不能在对话框片段中使用onClick?

  16. 16

    为什么我的线性渐变不能在Firefox中使用?

  17. 17

    为什么不能在分配中使用Unicode字符√和??

  18. 18

    为什么复数文字不能在clang中使用?

  19. 19

    为什么不能在字符串内插中使用_?

  20. 20

    为什么我不能在Swift中使用let in协议?

  21. 21

    为什么notifyAll()不能在线程实例中使用?

  22. 22

    为什么我不能在JCreator中使用JavaFX?

  23. 23

    为什么不能在`beforeSave`函数中使用`useMasterKey()`?

  24. 24

    为什么我不能在TRecord中使用Variable?

  25. 25

    为什么我不能在MacVim中使用`<和`>?

  26. 26

    为什么我不能在crontab中使用大括号?

  27. 27

    为什么我不能在pow()函数中使用整数?

  28. 28

    为什么不能在成员函数中使用这种模式?

  29. 29

    为什么不能在JavaDoc中使用<abbr>标记?

热门标签

归档