首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何访问Ruby splat参数?

如何访问Ruby splat参数?
EN

Stack Overflow用户
提问于 2019-08-29 16:58:37
回答 2查看 143关注 0票数 2

我已经覆盖了我设计的gem中的send_devise_notification方法。

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

我期待的是一个字符串,但看看下面奇怪的输出:

代码语言:javascript
复制
class User
  include Mongoid::Document

  devise :confirmable, :database_authenticatable, :registerable,
         :recoverable, :rememberable, :trackable, :validatable, :lockable

  protected

    def send_devise_notification(notification, *args)
      p *args.inspect               # => ["auNsGzsnpoQWtAk2Z1Tr", {}]
      p *args[0].inspect            # => "auNsGzsnpoQWtAk2Z1Tr"
      p *args[0].class.to_s.inspect # => "String"
      token = *args[0]
      p token.inspect               # => ["auNsGzsnpoQWtAk2Z1Tr"]
      p token.class.to_s.inspect    # => "Array"
    end
end

当我记录它的时候,我看到了一个字符串。但是当我把它放入一个token变量时,我看到了一个数组。我不能把变量转换成字符串。我尝试过token.to_s等。

知道发生了什么吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-08-29 17:02:34

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

代码语言:javascript
复制
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 (不带前导星号)。

票数 4
EN

Stack Overflow用户

发布于 2019-08-29 17:05:53

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

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

https://stackoverflow.com/questions/57706598

复制
相关文章

相似问题

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