Создание Хеша от массива - как это работает?

Codeslave просит, чтобы "Это не должен был всегда быть "$ORACLE_ HOME/network/admin/tnsnames.ora"? Ответ не, это не. Рассмотрите эти два вызова tnsping на той же машине:

C:\Documents and Settings\me>D:\Oracle\10.2.0_DB\BIN\tnsping orcl

TNS Ping Utility for 32-bit Windows: Version 10.2.0.4.0 - Production on 09-OCT-2
008 14:30:12

Copyright (c) 1997,  2007, Oracle.  All rights reserved.

Used parameter files:
D:\Oracle\10.2.0_DB\network\admin\sqlnet.ora


Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = xxxx
)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = ORCL)))

OK (40 msec)

C:\Documents and Settings\me>tnsping orcl

TNS Ping Utility for 32-bit Windows: Version 10.2.0.1.0 - Production on 09-OCT-2
008 14:30:21

Copyright (c) 1997, 2005, Oracle.  All rights reserved.

Used parameter files:
D:\oracle\10.2.0_Client\network\admin\sqlnet.ora


Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)
(HOST = XXXX)(PORT = 1521))) (CONNECT_DATA = (SERVICE_NAME = ORCL)))
OK (20 msec)

C:\Documents and Settings\me>

Примечание два различных расположения файлов параметра, которые зависят, на котором tnsping исполняемом файле Вы работаете (и возможно откуда это выполняется). Для находящегося в tnsnames оракула, объединяющегося в сеть, с помощью переменной TNS_ADMIN, единственный способ гарантировать, что Вы получаете последовательный tnsnames.ora файл. (ОТМЕТЬТЕ: центральный Windows ответ)

5
задан uzo 22 September 2009 в 05:49
поделиться

2 ответа

Как указано в документации :

Hash["a", 100, "b", 200]       #=> {"a"=>100, "b"=>200}
Hash["a" => 100, "b" => 200]   #=> {"a"=>100, "b"=>200}
{ "a" => 100, "b" => 200 }     #=> {"a"=>100, "b"=>200}

Вы не можете передать массив методу Hash [] в соответствии с документацией, поэтому знак splat просто способ взорвать массив fruit и передать его элементы в качестве обычных аргументов методу Hash [] . Действительно, это очень распространенное использование оператора splat.

Замечательно то, что если вы попытаетесь передать нечетное количество аргументов в Hash, вы получите исключение ArgumentError :

fruit = ["apple","red","banana","yellow","orange"]
#=> ["apple", "red", "banana", "yellow", "orange"]
Hash[*fruit] #=> ArgumentError: odd number of arguments for Hash
10
ответ дан 13 December 2019 в 05:38
поделиться

Посмотрите на метод открытого класса [] в классе Hash. (Скажем, здесь.) В нем четко указано, что будет создан новый хэш (экземпляр) и заполнен данными объектами. Естественно, они встречаются парами. Оператор splat существенно расширяет массив при использовании в качестве параметра.

2
ответ дан 13 December 2019 в 05:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: