Size: a a a

Язык программирования Julia / Julia programming language

2020 November 06

УМ

Убийца Мамонтов... in Язык программирования Julia / Julia programming language
я пробовал джуно и мне не зашло
источник

AK

Alexandr Krotov in Язык программирования Julia / Julia programming language
ну он уже в -10 загнался, а входить в get! так и не собирается если верить дебаггеру
источник

УМ

Убийца Мамонтов... in Язык программирования Julia / Julia programming language
вскод + плагин джулии выглядит неплохо
источник

AK

Alexandr Krotov in Язык программирования Julia / Julia programming language
больше на баг похоже
источник

АО

Андрей Оськин... in Язык программирования Julia / Julia programming language
Да, что-то странное.
источник

АО

Андрей Оськин... in Язык программирования Julia / Julia programming language
Вот так работает
known = Dict(0=>0, 1=>1)
function fibonacci(n; known = known)
   haskey(known, n) && return known[n]
   known[n] = fibonacci(n - 1) + fibonacci(n - 2)

   return known[n]
end
источник

AK

Alexandr Krotov in Язык программирования Julia / Julia programming language
function fibonacci(n)
   if n ∈ keys(known)
       return known[n]
   end
   res = fibonacci(n-1) + fibonacci(n-2)
   known[n] = res
   return res
end
источник

AK

Alexandr Krotov in Язык программирования Julia / Julia programming language
В книге такой вариант, работает тоже
источник

AK

Alexandr Krotov in Язык программирования Julia / Julia programming language
Но хотелось красиво через get! обернуть
источник

AK

Alexandr Krotov in Язык программирования Julia / Julia programming language
на первый взгляд все должно было быть хорошо 😂
источник

АО

Андрей Оськин... in Язык программирования Julia / Julia programming language
Ну, так как он default в анонимную функцию заворачивает, то всё что угодно может случиться.
источник

АО

Андрей Оськин... in Язык программирования Julia / Julia programming language
Насколько я помню, анонимные функции - это структуры, возможно ему захотелось значения полей посчитать.
источник

AK

Alexandr Krotov in Язык программирования Julia / Julia programming language
В эту сторону что-то похоже, да
источник

AK

Alexandr Krotov in Язык программирования Julia / Julia programming language
Потому что если заведомо загнать его в бесконечность вот так
источник

AK

Alexandr Krotov in Язык программирования Julia / Julia programming language
То поведение абсолютно идентичное
источник

АО

Андрей Оськин... in Язык программирования Julia / Julia programming language
Ну, всегда можно пиратством заняться и переопределить get! назад 😊)))
источник

AK

Alexandr Krotov in Язык программирования Julia / Julia programming language
Ладно тут, просто числа считает, но ведь в дефаут могут запихнуть что-то, что имеет побочный эффект на который рассчитывают только если ключа нет, а получается функция вполне себе может вызваться и при наличии ключа
источник

AK

Alexandr Krotov in Язык программирования Julia / Julia programming language
Конечно врятле такое где-то встретишь, но все таки
источник

АО

Андрей Оськин... in Язык программирования Julia / Julia programming language
function get!(t::AbstractDict{K,V}, key::K, default) where K where V
   haskey(t, key) && return t[key]
   t[key] = default

   return t[key]
end

known = Dict(0=>0, 1=>1)
function fibonacci(n; known = known)
   return get!(known, n, fibonacci(n - 1) + fibonacci(n - 2))
end

fibonacci(2)


Всё равно в StackOverflow уходит.
источник

AK

Alexandr Krotov in Язык программирования Julia / Julia programming language
julia> function foo()
          println("Hello, world!")
          return 10
      end
foo (generic function with 1 method)

julia> known = Dict(0=>0, 1=>1)
Dict{Int64,Int64} with 2 entries:
 0 => 0
 1 => 1

julia> get!(known, 0, foo())
Hello, world!
0
источник