Ссылка внутри хеша - PullRequest
       1

Ссылка внутри хеша

0 голосов
/ 28 сентября 2018

У меня есть хеш:

test = {
  :key1 => "Test",
  :key2 => "Test2",
  :key3 => REF TO KEY1
}

Можно ли разрешить key3 ссылаться на значение key1?

Ответы [ 2 ]

0 голосов
/ 28 сентября 2018

Да, это легко возможно.Выражение для значения может быть любым произвольным выражением Ruby, включая, конечно, доступ к значению из Hash:

test = {
  :key1 => "Test",
  :key2 => "Test2",
}

test[:key3] = test[:key1]
0 голосов
/ 28 сентября 2018

Это действительно не рекомендуется, и я предполагаю, что есть лучший способ решить любую большую проблему, которую вы пытаетесь решить с помощью этой техники .

Но один из способов сделать это - создать Hash, чей default_proc возвращает значение :key1, если оно передано :key3.

> test = Hash.new { |h,k| k == :key3 ? h[:key1] : nil }
> test[:key1] = "Test"
> puts test[:key3]
Test

И это действует как ссылка, что можно увидеть, если мы изменим значение :key1

> test[:key1] = "Test2"
> puts test[:key3]
Test2  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...