4
Nimマニュアルによれば、変数型は「静的型」であり、変数がメモリ内で指す実際の値は「動的型」です。「静的タイプ」と「動的タイプ」はどのように異なっていますか?
どのように異なるタイプにすることができますか?私は間違った型を変数に代入するとエラーになると思った。
Nimマニュアルによれば、変数型は「静的型」であり、変数がメモリ内で指す実際の値は「動的型」です。「静的タイプ」と「動的タイプ」はどのように異なっていますか?
どのように異なるタイプにすることができますか?私は間違った型を変数に代入するとエラーになると思った。
import typetraits
type
Person = ref object of RootObj
name*: string
age: int
Student = ref object of Person # a student is a person
id: int
method sayHi(p: Person) {.base.} =
echo "I'm a person"
method sayHi(s: Student) =
echo "I'm a student"
var student = Student(name: "Peter", age: 30, id: 10)
var person: Person = student # valid assignment to base type
echo person.repr # contains id as well
echo name(person.type) # static type = Person
person.sayHi() # dynamic type = I'm a student