Как правильно сформулировать это утверждение в Ruby? - PullRequest
0 голосов
/ 25 февраля 2010

Я новичок в этом, и у меня возникают проблемы с поиском подходящего способа выразить это в Ruby. И я не знаю, отличается ли Ruby API в SketchUp. Но это то, для чего я пытаюсь это использовать.

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.

Значение, которое я хочу получить, и я надеюсь, что это имеет смысл, значение этого конкретного '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' => 'value = "id"'

Имеет ли это смысл?

Я дергаю себя за волосы, поэтому любая помощь, которую вы можете оказать в этом, была бы великолепна.

Ответы [ 3 ]

0 голосов
/ 25 февраля 2010

Если вы хотите интерполировать строки, например, включить их значение в строку, то, возможно, вам помогут следующие примеры:

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

В приведенном выше примере c будет иметь значение: this is a string. Кроме того, при интерполяции допустимый код Ruby принимается. Итак, это тоже нормально:

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

И в этом случае c будет иметь значение is a string. Итак, если вам нужно что-то интерполировать, сначала подумайте, как бы вы это сделали, используя обычный код, а затем просто добавьте #{} вокруг него.

0 голосов
/ 26 февраля 2010

Я понял это.

Вот рабочий код

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

0 голосов
/ 25 февраля 2010

, если эти имена, не входящие в кавычки, являются переменными, значения которых вы хотите получить, вероятно, должно быть:

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

но, как сказал Гео, более подробная информация о фактической цели / намерении поможет

Кстати, эта конструкция называется интерполяцией строк (http://en.wikibooks.org/wiki/Ruby_Programming/Syntax/Literals#Interpolation)

...