Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/53.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何访问Ruby splat参数?_Ruby On Rails_Arrays_Ruby_Devise_Splat - Fatal编程技术网

Ruby on rails 如何访问Ruby splat参数?

Ruby on rails 如何访问Ruby splat参数?,ruby-on-rails,arrays,ruby,devise,splat,Ruby On Rails,Arrays,Ruby,Devise,Splat,我已从我的设备gem中重写了发送设备通知方法 我需要访问*args数组中的第一个元素,我假设这可以通过*args[0]实现 我需要一个字符串,但请查看下面奇怪的输出: 类用户 include Mongoid::Document 设计:可确认,:数据库\可验证,:可注册, :可恢复,:可记忆,:可跟踪,:可验证,:可锁定 受保护的 def发送设备通知(通知,*args) p*args.inspect#=>[“auNsGzsnpoQWtAk2Z1Tr”,{}] p*args[0]。检查#=>“auN

我已从我的设备gem中重写了
发送设备通知
方法

我需要访问
*args
数组中的第一个元素,我假设这可以通过
*args[0]
实现

我需要一个字符串,但请查看下面奇怪的输出:

类用户
include Mongoid::Document
设计:可确认,:数据库\可验证,:可注册,
:可恢复,:可记忆,:可跟踪,:可验证,:可锁定
受保护的
def发送设备通知(通知,*args)
p*args.inspect#=>[“auNsGzsnpoQWtAk2Z1Tr”,{}]
p*args[0]。检查#=>“auNsGzsnpoQWtAk2Z1Tr”
p*args[0].class.to#u.inspect#=>“字符串”
令牌=*args[0]
p token.inspect#=>[“auNsGzsnpoQWtAk2Z1Tr”]
p token.class.to#u.inspect#=>“数组”
结束
结束
当我记录它时,我看到一个字符串。但当我把它放入
标记
变量时,我看到了一个数组。我无法将变量转换为字符串。我尝试了
token.to\u


知道发生了什么吗?

您应该使用
args
,它是一个数组:

def a(*args)
   args.each {|e| puts "-- #{e}" }
end  

a(1,2,3,4)
#-- 1
#-- 2
#-- 3
#-- 4
#=> [1, 2, 3, 4]

因此,如果要获取其第一个元素,请调用
args[0]
args.first
(不带前导星号)。

可以使用
args.first
获取第一个元素,因为
*args
是一个数组。

,您只能在方法定义和方法调用中使用一元
*
运算符。您可以使用args.first来获取第一个元素@johnsmith1976 being*args是一个数组