首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >`:limit`和` `limit:`有什么区别?

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

Stack Overflow用户
提问于 2015-04-30 02:05:48
回答 3查看 56关注 0票数 0

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

EN

回答 3

Stack Overflow用户

发布于 2015-04-30 02:09:49

这可能是散列表示法的问题。

Ruby 1.8和之前的版本使用这样的样式:

代码语言:javascript
复制
method(:limit => 10)

Ruby 1.9和更新的版本有一种新的样式,看起来像这样:

代码语言:javascript
复制
method(limit: 10)

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

代码语言:javascript
复制
{ test: 'value' }
# => { :test => 'value' }

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

代码语言:javascript
复制
t.string limit: 1024

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

票数 0
EN

Stack Overflow用户

发布于 2015-04-30 02:11:30

:limit是symbol类型的值。你可以在Ruby文档上看到更多关于符号的信息。http://ruby-doc.org/core-2.2.2/Symbol.html

limit:是一种语法糖,只有当散列键是符号时,才能将其用作散列键。例如:{ :limit => 10 }是传统的方式。在Ruby1.9.3之后,你可以像{ limit: 10 }一样重写它

票数 0
EN

Stack Overflow用户

发布于 2015-04-30 02:16:02

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

代码语言:javascript
复制
symbol = :limit

在名称后面使用冒号通常表示哈希键,如下所示:

代码语言:javascript
复制
hash = { limit: 5 }
puts hash[:limit] # returns 5

当使用旧版本的ruby时,通常会产生混淆,其中哈希的编写方式如下:

代码语言:javascript
复制
hash = { :limit => 5 }
puts hash[:limit] # returns 5

它与上面的语句具有相同的含义。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29951235

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档