2016-09-27 2 views
2

Возможно ли определить несколько переменных с информацией о типе в одной строке в Julia v0.5 +? Можно определить нетипизированными переменные, например, так (давайте предположим, что переменные находятся в пределах некоторой функции),Несколько типизированных переменных в одной строке в Julia

x1, x2 = 0.01, 0.5 

но добавление информации о типе,

local x1 :: Float64, x2 :: Float64 = 0.01, 0.5 

завершается с ошибкой invalid syntax in "local" declaration. Я что-то делаю неправильно, или этот синтаксис не поддерживается вообще? ТИА.

+0

Почему вы хотите добавить информацию о типе вообще. Это делает код шумным и трудночитаемым, не добавляя ничего. –

+0

В основном просто для экспериментов с факторами, которые могут повлиять на производительность кода. –

+0

Правильно, я хочу сказать, что эти аннотации вообще не влияют на производительность (если вы не добавили в аннотацию другой тип, чем в литеральном). –

ответ

3

local не требуется в большинстве ситуаций, таких как простая функция на верхнем уровне.

julia> function f() 
      x1::Float64, x2::Float64 = 1, 5 
      x1, x2 
     end 
f (generic function with 1 method) 

julia> f() 
(1.0,5.0) 

Где local требуется (то есть, где имя в противном случае будет связан с внешней функции), этот синтаксис не будет работать, насколько я знаю. См. #7314.

+0

Спасибо, хотя кажется, что старый синтаксис объявления типа 'x :: T' устарел с версии v0.5.0: [# 16071] (https://github.com/JuliaLang/julia/issues/16071) –

+1

@ AretsPaeglis Это [не устарело] (https://github.com/JuliaLang/julia/pull/17445). Это только локальный 'x :: T' локальный (то есть без RHS), который устарел. –

+0

[This] (https://github.com/JuliaLang/julia/issues/16071#issuecomment-215984705) комментарий, казалось, предлагал иначе, но, проверив несколько примеров, я вижу вашу точку зрения. Благодарю. –

Смежные вопросы