用Ruby表达这个语句的正确方法是什么?

时间:2010-02-25 16:29:19

标签: ruby code-formatting

我是新手,我很难找到在Ruby中用这句话来表达的正确方法。而且我不知道SketchUp中的Ruby API是否不同。但是,那就是我正在尝试使用它。

def self.initialize_job_info
    return{
        'salesperson' => ' = $pg_settings['salespersons'[['salesperson']['id']]] if ('on' = $pg_settings['salespersons'[['salesperson']['defsales']]])'

这是我基本上要做的事情:

这部分代码按原样运行

def self.initialize_job_info
    return{
        'salesperson' => ''

如果没有找到预先存在的值,它会将空表单的job_info ['salesperson']的初始值设置为''。

所以,我想要在$ pg_settings传递的Hash中放置一个值。

我想要的价值是,我希望这是有意义的,这个特定'id'的价值

$pg_settings['salespersons'] {//which is a list of 'salesperson'
    <salesperson> id="561" name="name" phone="phone number" defsales="on" email="email" </salesperson>

if(defsales ==“on”)然后'salesperson'=&gt; '值= “ID”'

这有意义吗?

我把头发拉了出来,所以你能给予的任何帮助都会很棒。

3 个答案:

答案 0 :(得分:0)

如果那些不在引号内的名称是你想从中获取值的变量应该是:

'salesperson' => " = $pg_settings[#{salespersons}[[#{salesperson}][#{id}]]] if (#{on} = $pg_settings[#{salespersons}[[#{salesperson}][#{defsales}]]])"

但正如Geo所说,关于实际目的/意图的更多细节将有所帮助

顺便说一下,这种结构被称为字符串插值(http://en.wikibooks.org/wiki/Ruby_Programming/Syntax/Literals#Interpolation

答案 1 :(得分:0)

如果你想插入字符串,就像在字符串中包含它们的值一样,那么这些例子可以帮助你:

a = "a string"
b = "this is"
c = "#{b} #{a}"

在上面的示例中,c的值为this is a string。此外,在插值时,接受有效的Ruby代码。所以,这也没关系:

c = "#{ b.sub("this","") } #{a}"

在这种情况下,c的值为is a string。因此,如果您需要插入某些内容,请首先考虑如何使用普通代码执行此操作,然后在其周围添加#{}

答案 2 :(得分:0)

我明白了。

这是工作代码

def self.initialize_job_info
    return{
        'salesperson' => self.default,
    }
end

def self .default
    salespersons = $pg_settings['salespersons']
    salespersons.each do |salesperson|

    if (salesperson['defsales'] == 'on')
        return salesperson['id']
        end
    end
end

看起来我还有很长的路要走....... lol

相关问题