Size: a a a

Programming Offtop

2021 May 20

VP

Vladimir Petrakovich in Programming Offtop
Не перестают. Константы - это заранее известные значения.
источник

ch

central hardware in Programming Offtop
известные на этапе компиляции если быть точными
источник

Э

Эд in Programming Offtop
Теперь понял, почему val a называют переменной, до этого странно было
источник

ch

central hardware in Programming Offtop
то что ее нельзя имзенить из котлин кода еще не значит то что val Действительно не может изменится в runtime в отличие от реальных констант
источник

АО

Алексей Овсянников... in Programming Offtop
Её правильнее называть пропертёй или свойством:) переменной она не является ни семантически, ни фактически:) но да, это и не константа
источник

ch

central hardware in Programming Offtop
фактически не переменнная это так?
источник

Э

Эд in Programming Offtop
Если она определена в теле метода, то её не уместно называть свойством
источник

Э

Эд in Programming Offtop
Хотя с какой стороны барикады вы, так и называете вещи
источник

АО

Алексей Овсянников... in Programming Offtop
Фактически - значит, что там может вообще не лежать никакого значения:) то есть у вас там может быть геттер, который генерирует рандомное число каждый раз. Где тут переменная?:)
источник

ch

central hardware in Programming Offtop
хм, принмается
источник

АО

Алексей Овсянников... in Programming Offtop
Емнип, даже в котлиновской доке это называется property, и пока что я не видел лучшего перевода, чем свойство:) можете предложить свой вариант
источник

I

Igor in Programming Offtop
В ocaml просто let нельзя изменить, новые будут хайдить (если мы конечно не касаемся ref типа)
А в f# для такого можно объявить mutable let локальную переменную
источник

KD

Konstantin Dovnar in Programming Offtop
Новые будут хайдить?

Я надеюсь речь о локальном скоупе, а не том, что там можно одно имя переменной несколько раз использовать?
источник

I

Igor in Programming Offtop
Ну вот как-то так
Хотя в ocaml вообще стремный синтаксис для объявления лок переменных (как в большинстве ml)
источник

KD

Konstantin Dovnar in Programming Offtop
Не понимаю.
Это три раза в одном скоупе объявлена a?
Или они как-то перекрываются там от in?
источник

AM

Andrew Mikhaylov in Programming Offtop
https://www.youtube.com/watch?v=AqfGAusyJm4
Хонкай с Геншином слились в экстазе, но пока не с той стороны, с которой тут все ждут, к сожалению.
источник

I

Igor in Programming Offtop
Так понятнее? (Это f#)
Локальные переменные которы объявляются ниже, перекрывают область видимости более верхних
источник

KD

Konstantin Dovnar in Programming Offtop
Не особо.

Выглядит как
fun foo(): Unit {
   val a = ""
   val a = ""
   val a = ""
}
Но котлин так не позволит сделать, ибо имя уже занято.
источник

I

Igor in Programming Offtop
Да, в kotlin нельзя. Там ты можешь только параметр функции перекрыть лок переменно
источник

KD

Konstantin Dovnar in Programming Offtop
Нет же.
В целом в локальном скоупе можно перекрыть любую внешнюю переменную

fun main() {
   val a = "123"
   {
       val a = "321"
       {
           val a = "213"
       }
   }
}
источник