$(PSModulePath) 在这段 Ruby 代码中,(一元) * 操作符是做什么的?

$(公众人士)

根据 Ruby 代码

line = "first_name=mickey;last_name=mouse;country=usa"
record = Hash[*line.split(/=|;/)]
$(参考路径)

除了 *操作符之外,我理解了第二行中的所有内容——它在做什么? 这方面的文档在哪里?(正如你可能猜到的,寻找这个案子很困难... ...)

57702 次浏览
$(RemoteDebuggerAttach) $(RemoteDebuggerConnection)

*操作符。

$(RemoteDebuggerDebuggerlype)

它将 Array展开为一个参数列表,在本例中是 Hash.[]方法的一个参数列表。(更准确地说,它展开了任何响应 Ruby 1.9中的 to_ary/to_ato_a的对象。)

$(RemoteDebuggerDeployDebugCppRuntime)

举例来说,以下两个陈述是相等的:

method arg1, arg2, arg3
method *[arg1, arg2, arg3]
$(RemoteDebuggerServerName) $(RemoteDebuggerSQLDebug)

它还可以在不同的上下文中使用,以捕获方法定义中剩余的所有方法参数。在这种情况下,它不会扩张,而是合并:

def method2(*args)  # args will hold Array of all arguments
end

这里有更详细的信息。

$(RemoteDebuggerWorkingDirectory) $(RemoteGPUDebuggerTargetType)

Splat 操作符将传递给函数的数组解包,以便将每个元素作为单个参数发送给函数。

举个简单的例子:

>> def func(a, b, c)
>>   puts a, b, c
>> end
=> nil


>> func(1, 2, 3)  #we can call func with three parameters
1
2
3
=> nil


>> list = [1, 2, 3]
=> [1, 2, 3]


>> func(list) #We CAN'T call func with an array, even though it has three objects
ArgumentError: wrong number of arguments (1 for 3)
from (irb):12:in 'func'
from (irb):12


>> func(*list) #But we CAN call func with an unpacked array.
1
2
3
=> nil

就是这样!

$(RootNamespace)

正如大家所说,这是一个“劈啪”。寻找 Ruby 语法是不可能的,我已经在其他问题中提出了这个问题。这部分问题的答案是你搜索

asterisk in ruby syntax
$(RoslynTargetsPath)

在谷歌。谷歌是为你在那里,只要把你看到的文字。

$(SDK35ToolsPath)

无论如何,像许多 Ruby 代码一样,这些代码非常密集

line.split(/=|;/)
$(SDK40ToolsPath) $(SDKDisplayName)

生成一个包含六个元素的数组,即 first_name, mickey, last_name, mouse, country, usa。然后使用踏板将其转换为散列。现在,Ruby 人员总是让您查看 Splat 方法,因为所有东西都是在 Ruby 中公开的。我不知道它在哪里,但是一旦有了它,您将看到它通过数组运行 for并构建散列。

$(SDKIdentifier) $(SDKVersion)

您可以在 Core文档中查找代码。如果你找不到它(我找不到) ,你可以尝试编写一些像这样的代码(这样可以工作,但不是类 Ruby 的代码) :

line = "first_name=mickey;last_name=mouse;country=usa"
presplat = line.split(/=|;/)
splat = Hash.new
for i in (0..presplat.length-1)
splat[presplat[i]] = presplat[i+1] if i%2==0
end


puts splat["first_name"]
$(会议名称)

然后 Ruby 帮会就能告诉你为什么你的代码是愚蠢的、糟糕的或者完全错误的。

$(SolutionDir) $(SolutionExt)

如果您已经读到这里,请阅读 大麻文档以进行初始化。

$(SolutionFileName)

基本上,用几个参数初始化的散列将它们创建为键值对:

Hash["a", 100, "b", 200] #=> {"a"=>100, "b"=>200}
$(SolutionName)

所以在你的例子中,这会导致下面的散列:

{"first_name"=>"mickey", "last_name"=>"mouse", "county"=>"usa"}