forked from swiftlang/swift
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathstructs.swift
79 lines (64 loc) · 1.28 KB
/
structs.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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
// RUN: %target-run-simple-swift | FileCheck %s
// REQUIRES: executable_test
struct Interval {
var lo, hi : Int
init(_ lo: Int, _ hi: Int) {
self.lo = lo
self.hi = hi
}
}
func +(a: Interval, b: Interval) -> Interval {
return Interval(a.lo + b.lo, a.hi + b.hi)
}
func -(a: Interval, b: Interval) -> Interval {
return Interval(a.lo - b.hi, a.hi - b.lo)
}
prefix func -(a: Interval) -> Interval {
return Interval(-a.hi, -a.lo)
}
func print(a: Interval) {
print("[\(a.lo), \(a.hi)]")
}
// CHECK: [-2, -1]
print(-Interval(1,2))
// CHECK: [4, 6]
print(Interval(1,2) + Interval(3,4))
// CHECK: [1, 3]
print(Interval(3,4) - Interval(1,2))
// CHECK: And now you know
print("And now you know the rest of the story")
struct BigStruct {
var a,b,c,d,e,f,g,h : Int
}
func returnBigStruct() -> BigStruct {
return BigStruct(a: 1, b: 6, c: 1, d: 8, e: 0, f: 3, g: 4, h: 0)
}
// CHECK: 1
// CHECK: 6
// CHECK: 1
// CHECK: 8
// CHECK: 0
// CHECK: 3
// CHECK: 4
// CHECK: 0
var bs = returnBigStruct()
print(bs.a)
print(bs.b)
print(bs.c)
print(bs.d)
print(bs.e)
print(bs.f)
print(bs.g)
print(bs.h)
struct GenStruct<T> {
var a, b : Int
init(_ a: Int, _ b: Int) {
self.a = a
self.b = b
}
}
// CHECK: 19
// CHECK: 84
var gs = GenStruct<String>(19, 84)
print(gs.a)
print(gs.b)