Swift基礎語法 函式 對比OC

2021-07-15 22:53:05 字數 4489 閱讀 4777

//不帶引數

- (void)say

//帶有乙個引數

- (void)saywithname:(nsstring *)name

//帶有多個引數

- (void)saywithname:(nsstring *)name age:(nsinteger)age

//有返回值

- (nsstring *)info

//有返回值,並且帶有返回值

- (nsstring *)infowithname:(nsstring *)name age:(nsinteger)age

//無參無返回值

func say() -> void

say()

//輸出結果: hello

func say1()

say1()

//輸出結果: hello

//有參無返回值

func saywithname(name:string)

saywithname("cdh")

//輸出結果: hello cdh

//帶有多個引數

func saywithname(name:string, age:int)

saywithname("cdh", age: 20)

//輸出結果: hello cdh , i'm 20 years old

//無參有返回值

func info() -> string

print(info())

//輸出結果: name = cdh, age = 20

//有參有返回值

func info(name:string, age:int) ->

string

print(info("cdh", age:20))

//輸出結果: name = cdh, age = 20

//巢狀函式

var arr:array

= ["cdh","aarak","520"]

func showarray(array:[string])

}showarray(arr)

//輸出結果:

//cdh,

//aarak,

//520,

func bubblesort(inout array:[int])

let count = array.count;

forvar i = 1; i < count; i++ }}

}var arr1:array

= [50,20,30,80]

bubblesort(&arr1)

print(arr1)

//輸出結果: [20, 30, 50, 80]

func divisionopertaion1(a: double, b:double) -> double

func divisionopertaion2(dividend: double, divisor:double) -> double

func divisionopertaion3(dividend a: double, divisor b:double) -> double

print(divisionopertaion3(dividend: 10, divisor: 3.5))

func divisionopertaion4(a: double, divisor b:double) -> double

print(divisionopertaion4(10, divisor: 3.5))

//輸出結果:

func divisionopertaion(dividend: double, divisor:double) -> double

print(divisionopertaion(10, divisor: 3.5))

//輸出結果:2.85714285714286

//預設引數:

//可以在定義函式的時候給某個引數賦值, 當外部呼叫沒有傳遞該引數時會自動使用預設值

func joinstring(s1:string ,tostring s2:string, jioner s3:string) ->string

func joinstring2(s1:string ,tostring

s2:string, jioner

s3:string = "❤️")->string

print(joinstring2("hi", tostring:"beauty"))

//輸出結果:hi❤️beauty

func joinstring3(s1:string ,tostring s2:string,jioner:string

="❤️") ->

string

print(joinstring3("hi", tostring:"beauty", jioner:"��"))

//輸出結果: hi��beauty

func joinstring4(s1:string ,

jioner:string

="❤️",

tostring s2:string) ->

string

print(joinstring4("hi", jioner:"��", tostring:"beauty"))

//輸出結果: hi��beauty

func swap(var

a:int, var

b:int)

func swap(inout a:int, inout b:int)

var x1 =10;

var y1 =20;

print("交換前 a = \(x1) b = \(y1)")

swap(&x1, b: &y1)

print("交換後 a = \(x1) b = \(y1)")

//輸出結果:

//交換前 a = 10 b = 20

//交換後 a = 20 b = 10

func add(num1:int, num2:int, num3:int) -> int 

print(add(1, num2: 2, num3: 3))

//輸出結果:6

func add(nums:[int]) -> int

return sum

}print(add([1, 2, 3]))

//輸出結果:6

func add(nums:int...) -> int

return sum

}print(add(1, 2, 3))

//輸出結果:6

func add(other:int, nums:int...) -> int

return sum

}print(add(99, nums: 1, 2, 3))

//輸出結果:6

//這兩個函式的型別是 (int, int) -> int

func sum(a: int, b: int) ->int

func sub(a: int, b: int) ->int

//可以利用函式型別定義函式變數和常量

varfuncp:(int, int) -> int = sum

funcp = sub

print(funcp(10, 20))

//輸出結果: -10

//函式型別可以作為函式的引數

func calfunc(a: int, b: int ,option:(int, int) -> int) ->int

print(calfunc(10, b: 20, option: sum))

print(calfunc(10, b: 20, option: sub))

//輸出結果:

//30

//-10

//函式型別可以作為函式返回值

func max(a: int, b: int) -> int

func min(a: int, b: int) -> int

func choosefunc(getmax:bool) ->

(int , int) -> int

varfuncp2:(int , int) -> int = choosefunc(false)

print(funcp2(10, 20))

//輸出結果: 10

Swift與OC語法對比

1.模擬於oc語句最後不再需要分號結束 2.不再有.m與.h檔案,只有乙個.swift檔案 3.方法呼叫由 obj x 1 y 2 變為 obj.x 1,y 2 4.方法宣告 oc void setview swift func setview 注 方便起見以下前乙個為oc語法,後乙個為swift語...

OC 基礎語法

1 obect c 與 c 語言的區別 1 字尾名不一樣,c語言是.c 結尾 oc 是 h結尾。2 輸出資訊不同 c語言是用print 輸出,oc 是用nslog輸出。3 nslog會自動換行,並且還有時間戳輸出,二print沒有 4 匯入宣告 檔案 不一樣 oc 是用import,而c語言是用in...

oc基礎語法 oc特有語法(1)

1 根據以前學的,呼叫方法是這樣的 student stu student new stu setage 100 int age stu age 如果用點語法,這樣就可以呼叫了 stu.age 100 int age stu.age 2 點語法的本質 其實點語法的本質還是方法呼叫,當使用點語法時,編...