这段看起来像 JavaScript 对象的代码有什么作用?
What does this code, that looks like JavaScript object do?
@options = { query: {site: service, page: page} }
这是做什么的?在 javascript 中,我认为是对象定义,但我无法在 ruby 中找到它到底是什么。这将是完整的代码:
class StackExchange
include HTTParty
base_uri 'api.stackexchange.com'
def initialize(service, page)
@options = { query: {site: service, page: page} }
end
def questions
self.class.get("/2.2/questions", @options)
end
def users
self.class.get("/2.2/users", @options)
end
end
该代码创建一个散列(如 javascript 中)并将其分配给 options
实例值。
> options = { query: {site: :service, page: :page} }
=> {:query=>{:site=>:service, :page=>:page}}
> options.class
=> Hash
@options = { query: {site: service, page: page} }
转换为:
@options = {
:query => {
:site => service,
:page => page
}
}
这是 1.9 中引入的新哈希语法
@options
是一个带有嵌套哈希的哈希文字。实例化时 StackExchange
class 需要两个参数,一个页面和一个服务。
如果您要调用 @options[:query]
,它将 return {site: :service, page: :page}
的内部散列。这只是一种以帮助用户理解的方式存储不同数据的组织方式。
有兴趣读几篇:
http://ruby-doc.org/core-2.1.5/Hash.html - ruby 散列
上的文档
https://softwareengineering.stackexchange.com/questions/187457/what-is-the-principle-of-least-astonishment - 这是关于不同命名约定如何形成的很好的讨论。
这是一个 hash。
A Hash is a dictionary-like collection of unique keys and their values. Also called associative arrays, they are similar to Arrays, but where an Array uses integers as its index, a Hash allows you to use any object type.
散列很像 javascript 中的对象文字的用途。
最初哈希仅使用特殊的 "hashrocket" 语法:
hash = {
:a => 1
}
Ruby 1.9 引入了另一种语法形式,当你的键都是 symbols 时。它看起来很像一个 javascript 对象文字(这可能不是偶然的):
hash = {
a: 1,
b: 2
}
不同于 Javascript 对象 Ruby 哈希仅使用方括号表示法:
hash[:a]
@options = { query: {site: service, page: page} }
这是做什么的?在 javascript 中,我认为是对象定义,但我无法在 ruby 中找到它到底是什么。这将是完整的代码:
class StackExchange
include HTTParty
base_uri 'api.stackexchange.com'
def initialize(service, page)
@options = { query: {site: service, page: page} }
end
def questions
self.class.get("/2.2/questions", @options)
end
def users
self.class.get("/2.2/users", @options)
end
end
该代码创建一个散列(如 javascript 中)并将其分配给 options
实例值。
> options = { query: {site: :service, page: :page} }
=> {:query=>{:site=>:service, :page=>:page}}
> options.class
=> Hash
@options = { query: {site: service, page: page} }
转换为:
@options = {
:query => {
:site => service,
:page => page
}
}
这是 1.9 中引入的新哈希语法
@options
是一个带有嵌套哈希的哈希文字。实例化时 StackExchange
class 需要两个参数,一个页面和一个服务。
如果您要调用 @options[:query]
,它将 return {site: :service, page: :page}
的内部散列。这只是一种以帮助用户理解的方式存储不同数据的组织方式。
有兴趣读几篇:
http://ruby-doc.org/core-2.1.5/Hash.html - ruby 散列
上的文档https://softwareengineering.stackexchange.com/questions/187457/what-is-the-principle-of-least-astonishment - 这是关于不同命名约定如何形成的很好的讨论。
这是一个 hash。
A Hash is a dictionary-like collection of unique keys and their values. Also called associative arrays, they are similar to Arrays, but where an Array uses integers as its index, a Hash allows you to use any object type.
散列很像 javascript 中的对象文字的用途。 最初哈希仅使用特殊的 "hashrocket" 语法:
hash = {
:a => 1
}
Ruby 1.9 引入了另一种语法形式,当你的键都是 symbols 时。它看起来很像一个 javascript 对象文字(这可能不是偶然的):
hash = {
a: 1,
b: 2
}
不同于 Javascript 对象 Ruby 哈希仅使用方括号表示法:
hash[:a]