【问题标题】:symbol can be passed as a formal argument in ruby符号可以作为 ruby​​ 中的形式参数传递
【发布时间】:2017-03-30 05:22:37
【问题描述】:

我尝试使用符号甚至实例变量作为形式参数,但 ruby​​ 给出错误

语法错误,意外的 tSYMBEG,期待 ')'

def callMe(:value)

那么,rails 中的 form_for 是如何设法使用符号和实例变量作为第一个参数的

<% form_for(@user) do |f| %> ... <% end %>

<% form_for(:user) do |f| %> ... <% end %>

下面是我要执行的代码。

class Demo

attr_accessor :name, :surname

def initialize(name,surname)
    @name = name
    @surname = surname
    
end

def printThis
    puts name
    puts surname
     
    callMe(name)
    
end
    
    def callMe(:value)
        puts :value
    end
    
end

d = Demo.new('abc','pqr')

d.printThis

【问题讨论】:

    标签: ruby-on-rails ruby symbols


    【解决方案1】:

    当你定义你的函数时,参数不应该是一个符号,只有当你调用它时。再试一次callMe 定义为

    def callMe(value)
        p value.class
    end
    
    callMe(:test)
    

    【讨论】:

    • 因此,即使我们将 :test 作为参数传递,它也会将“test”分配为一个值而不是 :test 符号指向的值,对吧?
    • 我相信它仍然应该通过函数内部的符号。试试这个更新的代码。
    • 在类外写时会打印符号,但在类内时会报错
    猜你喜欢
    • 1970-01-01
    • 2015-08-18
    • 2018-04-30
    • 1970-01-01
    • 2014-04-09
    • 2015-04-07
    • 1970-01-01
    • 2020-02-04
    • 1970-01-01
    相关资源
    最近更新 更多