Skip to content

Instantly share code, notes, and snippets.

@shrkw
Last active February 28, 2016 11:39
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save shrkw/7dc6d0e03c62e5db4b2c to your computer and use it in GitHub Desktop.
Save shrkw/7dc6d0e03c62e5db4b2c to your computer and use it in GitHub Desktop.
swift playground
//: Playground - noun: a place where people can play
import Cocoa
// string
var str = "Hello, playgroundaaa"
var ihoho = 34343
print(str)
str = "ニーハオ" + str
str += "オゲホゲ"
"abc".uppercaseString
var bear = "🐻"
// http://tea-leaves.jp/swift/content/%E6%96%87%E5%AD%97%E5%9E%8B
// string interpolation
var hitPoint = 10
var message = "スライムのHPは\(hitPoint)です。"
var val = 1
for i in 1...10 {
val += i
}
// 定数
let pi = 3.14
let arr = [12,23]
arr[0]
//arr.append(33)
// ちゃんとimmutableにしてくれている
var ar = [12]
ar.append(34)
var animalLegs = ["Bird":2, "Dog":4, "Spider":8]
animalLegs["Spider"]
for (k,v) in animalLegs {
k + String(v)
}
let num = 11
var card = ""
switch num {
case 1:
card = "A"
case 2...10:
card = String(num)
case 11:
card = "J"
case 12:
card = "Q"
case 13:
card = "K"
default:
break
}
// Enum
enum Color: String {
case Red = "赤"
case Blue = "青"
case White = "白"
}
Color.Blue
Color.White.rawValue
// Optional
var op: Optional<Int> = 5
var op2: Int? = 4
op
op2 = nil
op
op!
op
3 + op!
5 + (op2 ?? 10)
let strings = ["2", "3", "four", "5"]
var nums = strings.map{Int($0)}
nums
nums = nums.filter{$0 != nil }
nums
nums.map {$0! }
var a2: Int? = nil
a2.map { $0 * $0 }
// function
func square(i:Int) -> Int {
return i * i
}
// return ないと怒られる。それはよしなにして欲しかった
square(3)
let sq = square
sq(3)
// Anonymous funciton
let anon = { (i:Int) -> Int in
i*i
}
// ブレイスで囲めばfuncとして扱うようだ
anon(4)
anon
// 以下は等価
let add = { (p1:Int, p2:Int) -> Int in p1 + p2 }
let and2: (Int, Int) -> Int = { p1, p2 in
p1 + p2
}
// 前者の方が綺麗だろう
// returnは省略可能
and2(3,4)
// Higher order function
func concat (p1: String, op: String -> String) -> String {
return "🗿" + op(p1) + "🗿"
}
var aa = concat("john", op: {$0.uppercaseString})
aa
func add2(p1: Int, p2: Int, closure: (Int, Int) -> Int) -> Int {
return closure(p1, p2)
}
add2(1, p2: 2, closure: { $0 + $1 })
// add2(1, 2, +)
// missing argument labelと言われる。二つ目以降の引数は引数名が必要なようだ
// 過去のSwiftにはlabelというのがあり引数
// Operator function
add2(1, p2: 2, closure: +)
// default argument
func greet(name: String = "world") -> String {
return "hello \(name)"
}
greet()
greet("Guerrero")
// Tailing Closure
add2(1, p2: 2) { $0 + $1 }
// Capturing value
func addNumber(number: Int) -> () -> Int {
var sum = 0
func add() -> Int {
sum += number
return sum
}
return add
}
let addTen = addNumber(10)
addTen() // 10
addTen() // 20
addTen() // 30
let addSeven = addNumber(7)
addSeven() // 7
addSeven() // 14
addSeven() // 21
addTen() // 40
// http://qiita.com/mokumoku/items/1c1f6f0a9afc5d82a2c0
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment