swift—4
mport Foundation
println("Hello, World!")
class NamedShape {
var numberOfSides = 0
var name : String
init(){
name = "xingz"
}
init(name:String){
self.name = name
}
func simpleDisception()->String{
return "\(name) has \(numberOfSides)sides"
}
}
class Square: NamedShape {
var sideLength : Double
init(name: String, sideLength:Double) {
self.sideLength = sideLength
super.init()
self.numberOfSides = 4
self.name = "正方形"
}
func area()->Double{
return sideLength * sideLength
}
override func simpleDisception() -> String {
return "\(super.simpleDisception()), the sideLength is \(sideLength) area is \(area())"
}
}
var square = Square(name: "正方形", sideLength: 10)
print(square.simpleDisception())
class yuan:NamedShape{
var radusi : Double
init( name: String, raduis: Double) {
self.radusi = raduis
super.init()
self.numberOfSides = 1
self.name = "圆"
}
func area()->Double{
return radusi * radusi * M_PI
}
override func simpleDisception() -> String {
return "\(super.simpleDisception()), area is \(area())"
}
}
var y = yuan(name: "yuan", raduis: 4)
print(y.simpleDisception())
class EquliaterTriangle: NamedShape {
var sideLength : Double
init(name: String, sideLength : Double) {
self.sideLength = sideLength
super.init()
self.name = name
}
var perimeter:Double{
get{
return sideLength * 3
}
set{
sideLength = newValue / 3
}
}
}
var equliaterTriangle = EquliaterTriangle(name: "三角形", sideLength: 10)
print(equliaterTriangle.perimeter)
equliaterTriangle.perimeter = 60
print(equliaterTriangle.sideLength)
class TriangleAndSquare{
var triangle:EquliaterTriangle{
willSet{
square.sideLength = newValue.sideLength
}
didSet{
print("\(triangle)")
}
}
var square : Square{
willSet{
triangle.sideLength = newValue.sideLength
}
didSet{
print("\(triangle)")
}
}
init(name : String ,sideLength :Double){
triangle = EquliaterTriangle(name: name, sideLength: sideLength )
square = Square(name: name, sideLength: sideLength)
}
}
var tAndS = TriangleAndSquare(name: "三角形和正方形", sideLength: 0.0)
var tria = EquliaterTriangle(name: "三角形", sideLength: 10)
tAndS.triangle = tria
print(tAndS.square.sideLength)
class Count{
var count = 0
func add(amount : Int, times : Int){
count += amount * times
}
}
var v1 = Count()
v1.add(10, times: 10)
print(v1.count)
enum Rank : Int{
case Ace = 1
case Two, Three, Four, Six, Seven, Eight, Nine, Ten
case Jack, Queen, King
func simpleDescripation()->NSString{
switch self{
case .Ace :
return "Ace"
case .Jack :
return "jack"
default:
return "\(self.rawValue)"
}
}
func moreThan(r1 : Rank)->Bool{
return self.rawValue > r1.rawValue
}
func say(){
print("hello world")
}
}
let king = Rank.King
print(king.simpleDescripation())
print(Rank.Ten.moreThan(Rank.Jack))
print(king.say())
let threeValue = Rank(rawValue: 20)
enum 棋{
case 象棋, 围棋, 五子棋, 跳棋, 飞行棋
func simpleDescripation()->NSString{
switch self{
case .象棋 :
return "象棋"
case .围棋 :
return "围棋"
case .五子棋 :
return "五子棋"
case .跳棋 :
return "跳棋"
case .飞行棋 :
return "飞行棋"
default :
return "\(self.hashValue)"
}
}
func popularDate()->String{
switch self{
case .象棋, .围棋 :
return "当前流行"
case .五子棋 :
return "流行"
default :
return "国际流行"
}
}
}
var 棋对象 = 棋.飞行棋
print(棋对象.simpleDescripation())
print(棋对象.popularDate())
enum level{
case 初级棋手, 中级棋手, 高级棋手
func simple()->String{
switch self{
case .初级棋手:
return "初级棋手"
case .中级棋手:
return "中级棋手"
case .高级棋手:
return "高级棋手"
}
}
}
var le = level.初级棋手
print(le.simple())
struct 棋艺{
var chess : 棋
var chessArt : level
let sss = 222
func simple()->String{
return "the person \(chess.simpleDescripation()) has \(chessArt.simple())"
}
}
let 王五 = 棋艺(chess: 棋.象棋, chessArt: level.初级棋手)
print(王五.simple())
print(王五.chess)
protocol ExampelProtocol{
var simple:String{
get
}
mutating func adjust()
}
class SimpleClass:ExampelProtocol{
var simple = "a very simple class"
func adjust() {
simple += "an adjust 100%"
}
}
var sim = SimpleClass()
print(sim.adjust())
print(sim.simple)
struct SimpleStruct:ExampelProtocol{
var simple = "a very simple class"
mutating func adjust() {
simple += "an adjust 100%"
}
}
var structExample = SimpleStruct(simple: "ewer")
print(structExample.simple)
print(structExample.adjust())
enum SimpleEnum:ExampelProtocol{
case one, two, three
var simple :String{
get{
switch self{
case .one:
return "one"
case .two:
return "two"
default :
return "three"
}
}
}
mutating func adjust() {
print(simple)
}
}
extension Int:ExampelProtocol{
var simple :String{
return "a extension"
}
mutating func adjust() {
print("very good")
}
}
var ss1 = 13
print(ss1.simple)
print(ss1.adjust())