синтаксис языка ruby ​​(как используется переменная platform_info - PullRequest
0 голосов
/ 09 июня 2010
 class EncodeDemoTest < Test                      #inheritance in ruby  
      def setup(platform_info, logdir)
        @telnet_ip                  = platform_info["telnet_ip"]
        @telnet_login               = platform_info["telnet_login"]
        @telnet_password            = nil
        @filesys_path               = platform_info["filesys_path"]
        @host_files_path            = platform_info["host_files_path"]
        @host_machine_ip            = platform_info["host_machine_ip"]
        @linuxserver_ip             = platform_info["linuxserver_ip"]
        @target_prompt              = platform_info["target_prompt"]
        @demo_execuable_path        = platform_info["demo_execuable_path"]
        @mts4ea_machine_ip          = platform_info["mts4ea_machine_ip"]
        @mts4ea_files_path          = platform_info["mts4ea_files_path"]
        @ffmpeg_machine_ip          = platform_info["ffmpeg_machine_ip"]
        @ffmpeg_service_machine_ip  = platform_info["ffmpeg_service_machine_ip"]          
        @ffmpeg_files_path          = platform_info["ffmpeg_files_path"]
        @ffmpeg_login               = platform_info["ffmpeg_login"]
        @ffmpeg_password            = platform_info["ffmpeg_password"]
        @ffmpeg_prompt              = platform_info["ffmpeg_prompt"]
        @platform_info              = platform_info

Может кто-нибудь сказать мне, как аргумент передается в метод установки. Значит, что означает этот синтаксис platform_info["telnet_ip"]

1 Ответ

0 голосов
/ 09 июня 2010

Похоже, platform_info предназначен для хеша .

setup будет вызван с чем-то вроде setup({'telnet_ip' => 'value'}, 'logdir_value'), а platform_info["telnet_ip"] вернет значение из platform_info для ключа "telnet_ip".

Обновление

С учетом кода:

@board = Target::TelnetClient.new "192.168.247.68", "root", 
  @telnet_password, logdir + "/log.txt"
app = Target::EncodeDemoApp.new() app.setup(@board, @demo_execuable_path)

похоже, что @board это не Hash, а Target::TelnetClient, который должен иметь [] метод, который заставляет его вести себя как Hash.

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

puts "@board is a #{@board.class}"
puts "@demo_executable_path is a #{@demo_executable_path.class}"

Для @board, чтобы увидеть, какие значения он содержит (telnet_ip, telnet_login и т. Д.), Вы можете попробовать:

puts @board.keys.inspect

Наконец, чтобы увидеть методы, которые предоставляет объект, вы можете использовать public_methods например,

puts @board.public_methods.inspect
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...