-
Notifications
You must be signed in to change notification settings - Fork 0
/
LoxValue.swift
37 lines (35 loc) · 1022 Bytes
/
LoxValue.swift
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
//
// LoxValue.swift
// slox
//
// Created by Danielle Kefford on 2/23/24.
//
enum LoxValue: CustomStringConvertible, Equatable {
case string(String)
case number(Double)
case boolean(Bool)
case `nil`
case userDefinedFunction(UserDefinedFunction)
case nativeFunction(NativeFunction)
case instance(LoxInstance)
var description: String {
switch self {
case .string(let string):
return string
case .number(let number):
return "\(number)"
case .boolean(let boolean):
return "\(boolean)"
case .nil:
return "nil"
case .userDefinedFunction(let function):
return "<function: \(function.name)>"
case .nativeFunction(let function):
return "<function: \(function)>"
case .instance(let klass as LoxClass):
return "<class: \(klass.name)>"
case .instance(let instance):
return "<instance: \(instance.klass.name)>"
}
}
}