Георги обнови решението на 10.10.2016 23:33 (преди почти 8 години)
Интересно ми е защо сте решили ключовете да бъдат символи? Също така не би ли било удачно и самите ключове на SUBSTANCES да са символи? Питам, не за друго, а защото все още се опитвам да си обясня употребата на символ като ключ.
По-добре е да се използват символи за ключове, защото за разлика от String-овете се интернират. Тоест ти ако в 3 различни функции извикваш SUBSTANCES['water'], създаваш 3 пъти String-a 'water'. Ако използваш символи, такъв проблем няма. По условие на функцията се подава елемента като String, а не като символ. Разбира се може да се мине през някакво преобразуване до символ, но това усложнява решението ненужно.
Някой да ме поправи, ако греша брутално. :)
@Петър е прав :)
Ето едно хубаво бабешко правило - ако нещото го има в кода, използва се само в кода и можеш да го замениш с константа, най-вероятно искаш да е символ.
Тук ключовете са стрингове само, защото функцията приема стринг като аргумент. Тогава е безсмислено ключовете да са символи, защото постоянно ще трябва да преобразуваме (с to_sym
).
Интересно ми е защо сте решили ключовете да бъдат символи? Също така не би ли било удачно и самите ключове на SUBSTANCES да са символи? Питам, не за друго, а защото все още се опитвам да си обясня употребата на символ като ключ.
По-добре е да се използват символи за ключове, защото за разлика от String-овете се интернират. Тоест ти ако в 3 различни функции извикваш SUBSTANCES['water'], създаваш 3 пъти String-a 'water'. Ако използваш символи, такъв проблем няма. По условие на функцията се подава елемента като String, а не като символ. Разбира се може да се мине през някакво преобразуване до символ, но това усложнява решението ненужно.
Някой да ме поправи, ако греша брутално. :)
@Петър е прав :)
Ето едно хубаво бабешко правило - ако нещото го има в кода, използва се само в кода и можеш да го замениш с константа, най-вероятно искаш да е символ.
Тук ключовете са стрингове само, защото функцията приема стринг като аргумент. Тогава е безсмислено ключовете да са символи, защото постоянно ще трябва да преобразуваме (с
to_sym
).