草庐IT

ruby - Ruby 参数列表中的单个拼音/星号是什么意思?

这个问题在这里已经有了答案:nakedasteriskasparameterinmethoddefinition:deff(*)(1个回答)关闭9年前。我今天浏览了Rails3ActiveRecord源代码,发现amethodwheretheentireparameterlistwasasingleasterisk.defsave(*)我找不到很好的描述来说明它的作用(尽管我有一些基于我对splat参数的了解的想法)。它有什么作用,为什么要使用它?

ruby - *::(星号双冒号)在 Ruby 中做什么?

我今天浏览Rails代码时偶然发现了thissnippet:new_date(*::Date._parse(string,false).values_at(:year,:mon,:mday))*::Date中的星号双冒号(或splat双冒号)有什么作用?大概它与特定命名空间的Date类的范围有关......但作者包含它是必要的,而不是仅仅使用标准的Date类。 最佳答案 我读错了代码;它根本不是“*::”运算符。这是发生了什么:在全局范围内找到Date类(::Date)调用_parse()获取哈希值调用values_at将散列转化为

ruby - 为什么数组前需要星号?

我不知道这是散列问题还是数组问题,但我不明白为什么在第三个示例中需要星号(*)符号才能获得填充数据的散列。没有它,它会输出一个空哈希。#-*-coding:utf-8-*-require'pp'pp[[:first_name,'Shane'],[:last_name,'Harvie']]#=>[[:first_name,"Shane"],[:last_name,"Harvie"]]pp[[:first_name,'Shane'],[:last_name,'Harvie']].flatten#=>[:first_name,"Shane",:last_name,"Harvie"]ppHas

ruby-on-rails - *(星号)符号在函数参数附近有什么作用,以及如何在其他情况下使用它?

我正在使用RubyonRails3,我想知道在函数参数附近出现*运算符意味着什么,并了解它在其他场景中的用法。示例场景(此方法来自RubyonRails3框架):deffind(*args)returnto_a.find{|*block_args|yield(*block_args)}ifblock_given?options=args.extract_options!ifoptions.present?apply_finder_options(options).find(*args)elsecaseargs.firstwhen:first,:last,:allsend(args.fi

ruby - 裸星号作为方法定义中的参数 : def f(*)

我知道这是什么意思:deff(*args)...end但这意味着什么,为什么要使用它?它也可以与命名参数一起出现吗?deff(*)...end 最佳答案 deff(*)与deff(*args)具有相同的效果,只是它没有命名globbed参数数组。如果您希望函数接受任意数量的参数但实际上不需要在函数内引用它们,则可以使用它——例如,如果您重写一个方法但调用super而没有传递一个显式参数列表,这会导致将原始参数传递给super。您也可以编写deff(a,b,*)。 关于ruby-裸星号作为

ruby - *(星号)在 Ruby 中是什么意思?

这个问题在这里已经有了答案:关闭12年前。PossibleDuplicate:Whatisthe*operatordoingtothisstringinRuby可能在其他地方有答案,但我只是不知道如何找到它...如果我是对的,*表示在函数定义中使用多个参数:defhero(name,*super_powers)但是*在这样的代码中做了什么:Hash[*[[:first_name,'Shane'],[:last_name,'Harvie']].flatten]#=>{:first_name=>"Shane",:last_name=>"Harvie"}

ruby: "p *1..10"中的星号是什么意思

线p*1..10和做的完全一样(1..10).each{|x|putsx}它为您提供以下输出:$ruby-e"p*1..10"12345678910例如,在使用textmate时这是一个很好的快捷方式,但是星号有什么作用?这是如何运作的?在网上找不到任何东西... 最佳答案 这是splatoperator.您会经常看到它用于将数组拆分为函数的参数。defmy_function(param1,param2,param3)param1+param2+param3endmy_values=[2,3,5]my_function(*my_va

javascript - JSON - 名为 '*' 星号的访问字段

我正在尝试访问具有键'*'的JSON字段:{"parse":{"text":{"*":"textiwanttoaccess"}}}myObject.parse.text.*和myObject.parse.text[0]都不起作用。我已经搜索了一个小时,但没有发现星号具有特殊含义的任何提示。如果我只是遍历整个树并与if(key=="*")进行字符串比较,我可以检索文本,但我想直接访问该字段。我该怎么做? 最佳答案 json.parse.text["*"]对象成员的讨厌名称。星号没有特殊含义;它是一个和其他字符串一样的字符串。myObj

javascript - 递归生成器函数中 yield 后的 *(星号/星号)语法是什么意思?

这个问题在这里已经有了答案:Delegatedyield(yieldstar,yield*)ingeneratorfunctions(3个答案)关闭6年前。假设我创建了一个ES6生成器function*createFibonacciIterator(a=0,b=1){yieldb;yield*createFib(b,b+a);//然后我使用该生成器获得前20个结果letfibber=createFibonacciIterator();for(letii=0;ii如果我将*留在yield*createFib(b,b+a);行中,事情就会中断,这是有道理的,因为我不想要yield一个迭代器

javascript - 带星号的负前瞻如何工作?

我试图理解为什么我没有从正则表达式中获得预期的结果。我已经知道什么是负前瞻(显然不是:-))而且星号是零次或多次重复。看看这个正则表达式:a(?![^3])这将匹配a,它后面没有non-3。所以看这个测试字符串,粗体部分是匹配的:a3333335好的此外-如果我将正则表达式更改为:a(?![^3]+)//notice"+"它仍然会匹配:a3333335这将匹配a后面没有非3(至少一个)问题我的问题是*:让我们将正则表达式更改为:a(?![^3]*)这将不匹配a3333335但我的问题是-为什么?根据图纸:a后面不应跟:Eithernothingorneithernon-3's但这确实发