Что эквивалентно `если x в y` в hy? - PullRequest
0 голосов
/ 14 января 2019

Я не могу найти встроенный (или эквивалентный) в hy, который позволяет мне проверять что-то без обработки исключения

Я хотел бы написать что-то вроде:

(setv foo {:a 1 :b 2})
(if (in foo :c) 
    (foo)  
  (boo))

(:c foo) и (get foo :c) оба приводят к исключению

1 Ответ

0 голосов
/ 15 января 2019

Hy имеет эквивалент для всех операторов Python. Hy использует префиксную нотацию для всех операторов, но не меняет порядок операндов по сравнению с тем, каким они были бы в инфиксной нотации. Так что (- 10 8) в Hy равен 2, так же, как 10 - 8 в Python.

Это относится и к оператору in. (in :c foo) похоже на HyKeyword('c') in foo. Думайте об этом как in(:c, foo), а не «В foo: c?».

...