`:limit`和`limit:`有什么区别?

时间:2015-04-29 18:05:48

标签: ruby literals

:limitlimit:之间有什么区别?我假设第一个是在Ruby on Rails中限制条目大小的方法。第二个是什么?我也不知道将列n放在右侧有什么意义。

2 个答案:

答案 0 :(得分:0)

这可能是哈希表示法的问题。

Ruby 1.8和之前的使用类似这样的风格:

method(:limit => 10)

Ruby 1.9及更新版本的新样式如下:

method(limit: 10)

新的符号在Python和JavaScript等其他语言中更像。但是,它们在功能上是相同的,因为您可以使用irb来检查它始终以常规表示法显示的位置:

{ test: 'value' }
# => { :test => 'value' }

至于你对limit意味着什么的问题,这实际上取决于你传递给它的方法。在模式定义的上下文中,它可以限制字段的大小:

t.string limit: 1024

如果它位于查询的上下文中,则可能会限制返回的结果数。每种方法都有自己的解释,因此您需要查阅遇到的每种方法的文档。

答案 1 :(得分:-1)

在名称前面有冒号:的变量谴责它们是符号(唯一标识符),这意味着可以执行以下操作:

symbol = :limit

在名称后使用冒号通常用于表示散列键,如下所示:

hash = { limit: 5 }
puts hash[:limit] # returns 5

使用旧版本的ruby时经常出现混乱,其中哈希编写如下:

hash = { :limit => 5 }
puts hash[:limit] # returns 5

与上述陈述具有相同的确切含义。