2016-08-11 4 views
2

В Python if может использоваться в ситуации, например, для необязательного форматирования строк.Julia string format "if"

bar = 3 
"{n} bar{s}".format(n=bar, s='s' if bar != 1 else '') 
# "3 bars" 

bar = 1 
"{n} bar{s}".format(n=bar, s='s' if bar != 1 else '') 
# "1 bar" 

Julia использует знак доллара для форматирования строки.

foo = 3 
"foo $foo" # "foo 3" 

Можно ли просто отразить функциональность кода Python с помощью Julia?

+2

Да. Метод '' 'интерполяции работает с выражениями в паранеттезе. В этом случае '$ bar bar $ (bar! = 1? S ':" ")" 'эквивалентно результатам python. –

+0

@DanGetz Это прекрасно работает. Было бы очень полезно добавить это в качестве ответа - хотелось бы решить этот вопрос и отметить ваше решение как правильное. – 2Cubed

+1

Pythons inline if - это просто триевый оператор julia's (и C и другие языки). Python 'a if b else c' julia's' b? a: c' (и equiv для 'b и a или c' Lua) –

ответ

5

Да. Метод интерполяции $ работает с выражениями в скобках. В этом случае $bar bar$(bar != 1 ? 's' : "") эквивалентен результатам Python.

Как упоминалось в @ Oxinabox, встроенный оператор Python if соответствует тройному оператору Джулии. В июле тройной оператор a ? b : c является удобным ярлыком для if a b ; else c ; end. Обратите внимание, что это означает, что 1==2 ? foo() : bar() не оценивает foo().

2

В дополнение ко всему, что сказал @DanGetz, вы также можете проверить Formatting package - он явно разработан, чтобы предложить больше возможностей для форматирования на языке Python для Julia.

+0

Может ли' printfmt' использоваться для создания матриц, например [этот вопрос] (http://stackoverflow.com/questions/38819425/how-to -specify-the-format-for-printing-a-array-of-floats-in-julia). –