Swift ! ? 的用法說(shuō)明 -----可選鏈

1.首先要了解Optional類型包括什么,

通過(guò)在想調(diào)用的屬性瘪撇、方法、或下標(biāo)的可選值(optional value)后面放一個(gè)問(wèn)號(hào)(?)鹊汛,可以定義一個(gè)可選鏈萧芙。這一點(diǎn)很像在可選值后面放一個(gè)嘆號(hào)(!)來(lái)強(qiáng)制展開(kāi)它的值。它們的主要區(qū)別在于當(dāng)可選值為空時(shí)可選鏈?zhǔn)秸{(diào)用只會(huì)調(diào)用失敗寓搬,然而強(qiáng)制展開(kāi)將會(huì)觸發(fā)運(yùn)行時(shí)錯(cuò)誤显蝌。

為了反映可選鏈?zhǔn)秸{(diào)用可以在空值(nil)上調(diào)用的事實(shí),不論這個(gè)調(diào)用的屬性、方法及下標(biāo)返回的值是不是可選值曼尊,它的返回結(jié)果都是一個(gè)可選值。你可以利用這個(gè)返回值來(lái)判斷你的可選鏈?zhǔn)秸{(diào)用是否調(diào)用成功脏嚷,如果調(diào)用有返回值則說(shuō)明調(diào)用成功骆撇,返回nil則說(shuō)明調(diào)用失敗。

特別地父叙,可選鏈?zhǔn)秸{(diào)用的返回結(jié)果與原本的返回結(jié)果具有相同的類型神郊,但是被包裝成了一個(gè)可選值。例如趾唱,使用可選鏈?zhǔn)秸{(diào)用訪問(wèn)屬性涌乳,當(dāng)可選鏈?zhǔn)秸{(diào)用成功時(shí),如果屬性原本的返回結(jié)果是Int類型甜癞,則會(huì)變?yōu)镮nt?類型夕晓。

下面幾段代碼將解釋可選鏈?zhǔn)秸{(diào)用和強(qiáng)制展開(kāi)的不同。
首先定義兩個(gè)類Person和Residence:

<pre>class Person {
var residence: Residence?
}

class Residence {
var numberOfRooms = 1
}</pre>
Residence有一個(gè)Int類型的屬性numberOfRooms悠咱,其默認(rèn)值為1蒸辆。Person具有一個(gè)可選的residence屬性,其類型為Residence?析既。
假如你創(chuàng)建了一個(gè)新的Person實(shí)例,它的residence屬性由于是是可選型而將初始化為nil,在下面的代碼中,john有一個(gè)值為nil的residence屬性:
<pre>let john = Person()</pre>
如果使用嘆號(hào)(!)強(qiáng)制展開(kāi)獲得這個(gè)john的residence屬性中的numberOfRooms值躬贡,會(huì)觸發(fā)運(yùn)行時(shí)錯(cuò)誤,因?yàn)檫@時(shí)residence沒(méi)有可以展開(kāi)的值:

let roomCount = john.residence!.numberOfRooms
// 這會(huì)引發(fā)運(yùn)行時(shí)錯(cuò)誤

john.residence為非nil值的時(shí)候眼坏,上面的調(diào)用會(huì)成功拂玻,并且把roomCount設(shè)置為Int類型的房間數(shù)量。正如上面提到的宰译,當(dāng)residence為nil的時(shí)候上面這段代碼會(huì)觸發(fā)運(yùn)行時(shí)錯(cuò)誤檐蚜。
可選鏈?zhǔn)秸{(diào)用提供了另一種訪問(wèn)numberOfRooms的方式,使用問(wèn)號(hào)(?)來(lái)替代原來(lái)的嘆號(hào)(!):
<pre>if let roomCount = john.residence?.numberOfRooms {
print("John's residence has (roomCount) room(s).")
} else {
print("Unable to retrieve the number of rooms.")
}
// 打印 “Unable to retrieve the number of rooms.”</pre>
在residence后面添加問(wèn)號(hào)之后囤屹,Swift 就會(huì)在residence不為nil的情況下訪問(wèn)numberOfRooms熬甚。

因?yàn)樵L問(wèn)numberOfRooms有可能失敗,可選鏈?zhǔn)秸{(diào)用會(huì)返回Int?類型肋坚,或稱為“可選的 Int”乡括。如上例所示,當(dāng)residence為nil的時(shí)候智厌,可選的Int將會(huì)為nil诲泌,表明無(wú)法訪問(wèn)numberOfRooms。訪問(wèn)成功時(shí)铣鹏,可選的Int值會(huì)通過(guò)可選綁定展開(kāi)敷扫,并賦值給非可選類型的roomCount常量。

要注意的是,即使numberOfRooms是非可選的Int時(shí)葵第,這一點(diǎn)也成立绘迁。只要使用可選鏈?zhǔn)秸{(diào)用就意味著numberOfRooms會(huì)返回一個(gè)Int?而不是Int。

可以將一個(gè)Residence的實(shí)例賦給john.residence卒密,這樣它就不再是nil了:

john.residence = Residence()

john.residence現(xiàn)在包含一個(gè)實(shí)際的Residence實(shí)例缀台,而不再是nil。如果你試圖使用先前的可選鏈?zhǔn)秸{(diào)用訪問(wèn)numberOfRooms哮奇,它現(xiàn)在將返回值為1的Int?類型的值:
<pre>if let roomCount = john.residence?.numberOfRooms {
print("John's residence has (roomCount) room(s).")
} else {
print("Unable to retrieve the number of rooms.")
}
// 打印 “John's residence has 1 room(s).”</pre>

為可選鏈?zhǔn)秸{(diào)用定義模型類

通過(guò)使用可選鏈?zhǔn)秸{(diào)用可以調(diào)用多層屬性膛腐、方法和下標(biāo)。這樣可以在復(fù)雜的模型中向下訪問(wèn)各種子屬性鼎俘,并且判斷能否訪問(wèn)子屬性的屬性哲身、方法或下標(biāo)。

下面這段代碼定義了四個(gè)模型類贸伐,這些例子包括多層可選鏈?zhǔn)秸{(diào)用勘天。為了方便說(shuō)明,在Person和Residence的基礎(chǔ)上增加了Room類和Address類棍丐,以及相關(guān)的屬性误辑、方法以及下標(biāo)。

Person類的定義基本保持不變:

class Person {
var residence: Residence?
 }

Residence類比之前復(fù)雜些歌逢,增加了一個(gè)名為rooms的變量屬性巾钉,該屬性被初始化為[Room]類型的空數(shù)組:
<pre>class Residence {
var rooms = Room
var numberOfRooms: Int {
return rooms.count
}
subscript(i: Int) -> Room {
get {
return rooms[i]
}
set {
rooms[i] = newValue
}
}
func printNumberOfRooms() {
print("The number of rooms is (numberOfRooms)")
}
var address: Address?
}</pre>
現(xiàn)在Residence有了一個(gè)存儲(chǔ)Room實(shí)例的數(shù)組,numberOfRooms屬性被實(shí)現(xiàn)為計(jì)算型屬性秘案,而不是存儲(chǔ)型屬性砰苍。numberOfRooms屬性簡(jiǎn)單地返回rooms數(shù)組的count屬性的值。

Residence還提供了訪問(wèn)rooms數(shù)組的快捷方式阱高,即提供可讀寫(xiě)的下標(biāo)來(lái)訪問(wèn)rooms數(shù)組中指定位置的元素赚导。

此外,Residence還提供了printNumberOfRooms()方法赤惊,這個(gè)方法的作用是打印numberOfRooms的值吼旧。

最后,Residence還定義了一個(gè)可選屬性address未舟,其類型為Address?圈暗。Address類的定義在下面會(huì)說(shuō)明。

Room類是一個(gè)簡(jiǎn)單類裕膀,其實(shí)例被存儲(chǔ)在rooms數(shù)組中员串。該類只包含一個(gè)屬性name,以及一個(gè)用于將該屬性設(shè)置為適當(dāng)?shù)姆块g名的初始化函數(shù):
<pre>class Room {
let name: String
init(name: String) { self.name = name }
}</pre>
最后一個(gè)類是Address昼扛,這個(gè)類有三個(gè)String?類型的可選屬性寸齐。buildingName以及buildingNumber屬性分別表示某個(gè)大廈的名稱和號(hào)碼,第三個(gè)屬性street表示大廈所在街道的名稱:
<pre>class Address {
var buildingName: String?
var buildingNumber: String?
var street: String?
func buildingIdentifier() -> String? {
if buildingName != nil {
return buildingName
} else if buildingNumber != nil && street != nil {
return "(buildingNumber) (street)"
} else {
return nil
}
}
}</pre>

通過(guò)可選鏈?zhǔn)秸{(diào)用訪問(wèn)屬性

<u>正如使用可選鏈?zhǔn)秸{(diào)用代替強(qiáng)制展開(kāi)中所述,可以通過(guò)可選鏈?zhǔn)秸{(diào)用在一個(gè)可選值上訪問(wèn)它的屬性渺鹦,并判斷訪問(wèn)是否成功扰法。</u>
下面的代碼創(chuàng)建了一個(gè)Person
實(shí)例,然后像之前一樣海铆,嘗試訪問(wèn)numberOfRooms
屬性:
<pre>let john = Person()
if let roomCount = john.residence?.numberOfRooms {
print("John's residence has (roomCount) room(s).")
} else {
print("Unable to retrieve the number of rooms.")
}
// 打印 “Unable to retrieve the number of rooms.”</pre>
因?yàn)閖ohn.residence為nil迹恐,所以這個(gè)可選鏈?zhǔn)秸{(diào)用依舊會(huì)像先前一樣失敗。

還可以通過(guò)可選鏈?zhǔn)秸{(diào)用來(lái)設(shè)置屬性值:
<pre>let someAddress = Address()
someAddress.buildingNumber = "29"
someAddress.street = "Acacia Road"
john.residence?.address = someAddress</pre>
在這個(gè)例子中卧斟,通過(guò)john.residence來(lái)設(shè)定address屬性也會(huì)失敗,因?yàn)閖ohn.residence當(dāng)前為nil憎茂。

上面代碼中的賦值過(guò)程是可選鏈?zhǔn)秸{(diào)用的一部分珍语,這意味著可選鏈?zhǔn)秸{(diào)用失敗時(shí),等號(hào)右側(cè)的代碼不會(huì)被執(zhí)行竖幔。對(duì)于上面的代碼來(lái)說(shuō)板乙,很難驗(yàn)證這一點(diǎn),因?yàn)橄襁@樣賦值一個(gè)常量沒(méi)有任何副作用拳氢。下面的代碼完成了同樣的事情募逞,但是它使用一個(gè)函數(shù)來(lái)創(chuàng)建Address實(shí)例,然后將該實(shí)例返回用于賦值馋评。該函數(shù)會(huì)在返回前打印“Function was called”放接,這使你能驗(yàn)證等號(hào)右側(cè)的代碼是否被執(zhí)行。
<pre>func createAddress() -> Address {
print("Function was called.")
let someAddress = Address()
someAddress.buildingNumber = "29"
someAddress.street = "Acacia Road"
return someAddress
}
john.residence?.address = createAddress()</pre>
沒(méi)有任何打印消息留特,可以看出createAddress()函數(shù)并未被執(zhí)行纠脾。

通過(guò)可選鏈?zhǔn)秸{(diào)用調(diào)用方法

可以通過(guò)可選鏈?zhǔn)秸{(diào)用來(lái)調(diào)用方法,并判斷是否調(diào)用成功蜕青,即使這個(gè)方法沒(méi)有返回值苟蹈。

Residence類中的printNumberOfRooms()方法打印當(dāng)前的numberOfRooms值,如下所示:

 func printNumberOfRooms() {
print("The number of rooms is \(numberOfRooms)")
}

這個(gè)方法沒(méi)有返回值右核。然而慧脱,沒(méi)有返回值的方法具有隱式的返回類型Void,如無(wú)返回值函數(shù)中所述贺喝。這意味著沒(méi)有返回值的方法也會(huì)返回()菱鸥,或者說(shuō)空的元組。如果在可選值上通過(guò)可選鏈?zhǔn)秸{(diào)用來(lái)調(diào)用這個(gè)方法搜变,該方法的返回類型會(huì)是Void?采缚,而不是Void,因?yàn)橥ㄟ^(guò)可選鏈?zhǔn)秸{(diào)用得到的返回值都是可選的挠他。這樣我們就可以使用if
語(yǔ)句來(lái)判斷能否成功調(diào)用printNumberOfRooms()方法扳抽,即使方法本身沒(méi)有定義返回值。通過(guò)判斷返回值是否為nil可以判斷調(diào)用是否成功:
<pre>if john.residence?.printNumberOfRooms() != nil {
print("It was possible to print the number of rooms.")
} else {
print("It was not possible to print the number of rooms.")
}
// 打印 “It was not possible to print the number of rooms.”</pre>
同樣的,可以據(jù)此判斷通過(guò)可選鏈?zhǔn)秸{(diào)用為屬性賦值是否成功贸呢。在上面的通過(guò)可選鏈?zhǔn)秸{(diào)用訪問(wèn)屬性的例子中镰烧,我們嘗試給john.residence中的address屬性賦值,即使residence為nil楞陷。通過(guò)可選鏈?zhǔn)秸{(diào)用給屬性賦值會(huì)返回Void?怔鳖,通過(guò)判斷返回值是否為nil就可以知道賦值是否成功:
<pre>if (john.residence?.address = someAddress) != nil {
print("It was possible to set the address.")
} else {
print("It was not possible to set the address.")
}
// 打印 “It was not possible to set the address.”</pre>

通過(guò)可選鏈?zhǔn)秸{(diào)用訪問(wèn)下標(biāo)

通過(guò)可選鏈?zhǔn)秸{(diào)用,我們可以在一個(gè)可選值上訪問(wèn)下標(biāo)固蛾,并且判斷下標(biāo)調(diào)用是否成功结执。

注意
通過(guò)可選鏈?zhǔn)秸{(diào)用訪問(wèn)可選值的下標(biāo)時(shí),應(yīng)該將問(wèn)號(hào)放在下標(biāo)方括號(hào)的前面而不是后面艾凯∠揍#可選鏈?zhǔn)秸{(diào)用的問(wèn)號(hào)一般直接跟在可選表達(dá)式的后面。

下面這個(gè)例子用下標(biāo)訪問(wèn)john.residence屬性存儲(chǔ)的Residence實(shí)例的rooms數(shù)組中的第一個(gè)房間的名稱趾诗,因?yàn)閖ohn.residence為nil蜡感,所以下標(biāo)調(diào)用失敗了:
<pre>if let firstRoomName = john.residence?[0].name {
print("The first room name is (firstRoomName).")
} else {
print("Unable to retrieve the first room name.")
}
// 打印 “Unable to retrieve the first room name.”</pre>
在這個(gè)例子中,問(wèn)號(hào)直接放在john.residence的后面恃泪,并且在方括號(hào)的前面郑兴,因?yàn)閖ohn.residence是可選值。

類似的贝乎,可以通過(guò)下標(biāo)情连,用可選鏈?zhǔn)秸{(diào)用來(lái)賦值:

john.residence?[0] = Room(name: "Bathroom")

這次賦值同樣會(huì)失敗,因?yàn)閞esidence目前是nil糕非。

如果你創(chuàng)建一個(gè)Residence實(shí)例蒙具,并為其rooms數(shù)組添加一些Room實(shí)例,然后將Residence實(shí)例賦值給john.residence朽肥,那就可以通過(guò)可選鏈和下標(biāo)來(lái)訪問(wèn)數(shù)組中的元素:
<pre>let johnsHouse = Residence()
johnsHouse.rooms.append(Room(name: "Living Room"))
johnsHouse.rooms.append(Room(name: "Kitchen"))
john.residence = johnsHouse

if let firstRoomName = john.residence?[0].name {
print("The first room name is (firstRoomName).")
} else {
print("Unable to retrieve the first room name.")
}
// 打印 “The first room name is Living Room.”</pre>

訪問(wèn)可選類型的下標(biāo)

如果下標(biāo)返回可選類型值禁筏,比如 Swift 中Dictionary類型的鍵的下標(biāo),可以在下標(biāo)的結(jié)尾括號(hào)后面放一個(gè)問(wèn)號(hào)來(lái)在其可選返回值上進(jìn)行可選鏈?zhǔn)秸{(diào)用:
<pre>var testScores = ["Dave": [86, 82, 84], "Bev": [79, 94, 81]]
testScores["Dave"]?[0] = 91
testScores["Bev"]?[0] += 1
testScores["Brian"]?[0] = 72
// "Dave" 數(shù)組現(xiàn)在是 [91, 82, 84]衡招,"Bev" 數(shù)組現(xiàn)在是 [80, 94, 81]</pre>
上面的例子中定義了一個(gè)testScores數(shù)組篱昔,包含了兩個(gè)鍵值對(duì),把String類型的鍵映射到一個(gè)Int值的數(shù)組始腾。這個(gè)例子用可選鏈?zhǔn)秸{(diào)用把"Dave"數(shù)組中第一個(gè)元素設(shè)為91州刽,把"Bev"數(shù)組的第一個(gè)元素+1,然后嘗試把"Brian"數(shù)組中的第一個(gè)元素設(shè)為72浪箭。前兩個(gè)調(diào)用成功穗椅,因?yàn)閠estScores字典中包含"Dave"和"Bev"這兩個(gè)鍵。但是testScores字典中沒(méi)有"Brian"這個(gè)鍵奶栖,所以第三個(gè)調(diào)用失敗匹表。

連接多層可選鏈?zhǔn)秸{(diào)用

可以通過(guò)連接多個(gè)可選鏈?zhǔn)秸{(diào)用在更深的模型層級(jí)中訪問(wèn)屬性门坷、方法以及下標(biāo)。然而袍镀,多層可選鏈?zhǔn)秸{(diào)用不會(huì)增加返回值的可選層級(jí)默蚌。
也就是說(shuō):
如果你訪問(wèn)的值不是可選的,可選鏈?zhǔn)秸{(diào)用將會(huì)返回可選值苇羡。
如果你訪問(wèn)的值就是可選的绸吸,可選鏈?zhǔn)秸{(diào)用不會(huì)讓可選返回值變得“更可選”。
因此:
通過(guò)可選鏈?zhǔn)秸{(diào)用訪問(wèn)一個(gè)Int值设江,將會(huì)返回Int?锦茁,無(wú)論使用了多少層可選鏈?zhǔn)秸{(diào)用。
類似的叉存,通過(guò)可選鏈?zhǔn)秸{(diào)用訪問(wèn)Int?值蜻势,依舊會(huì)返回Int?值,并不會(huì)返回Int??鹉胖。
下面的例子嘗試訪問(wèn)john中的residence屬性中的address屬性中的street屬性。這里使用了兩層可選鏈?zhǔn)秸{(diào)用够傍,residence以及address都是可選值
<pre>if let johnsStreet = john.residence?.address?.street {
print("John's street name is (johnsStreet).")
} else {
print("Unable to retrieve the address.")
}
// 打印 “Unable to retrieve the address.”</pre>
john.residence現(xiàn)在包含一個(gè)有效的Residence實(shí)例甫菠。然而,john.residence.address的值當(dāng)前為nil冕屯。因此寂诱,調(diào)用john.residence?.address?.street會(huì)失敗。

需要注意的是安聘,上面的例子中痰洒,street的屬性為String?。john.residence?.address?.street的返回值也依然是String?浴韭,即使已經(jīng)使用了兩層可選鏈?zhǔn)秸{(diào)用丘喻。

如果為john.residence.address賦值一個(gè)Address實(shí)例,并且為address中的street屬性設(shè)置一個(gè)有效值念颈,我們就能過(guò)通過(guò)可選鏈?zhǔn)秸{(diào)用來(lái)訪問(wèn)street屬性:
<pre>let johnsAddress = Address()
johnsAddress.buildingName = "The Larches"
johnsAddress.street = "Laurel Street"
john.residence?.address = johnsAddress

if let johnsStreet = john.residence?.address?.street {
print("John's street name is (johnsStreet).")
} else {
print("Unable to retrieve the address.")
}
// 打印 “John's street name is Laurel Street.”</pre>
在上面的例子中泉粉,因?yàn)閖ohn.residence包含一個(gè)有效的Residence實(shí)例,所以對(duì)john.residence的address屬性賦值將會(huì)成功榴芳。

在方法的可選返回值上進(jìn)行可選鏈?zhǔn)秸{(diào)用

上面的例子展示了如何在一個(gè)可選值上通過(guò)可選鏈?zhǔn)秸{(diào)用來(lái)獲取它的屬性值嗡靡。我們還可以在一個(gè)可選值上通過(guò)可選鏈?zhǔn)秸{(diào)用來(lái)調(diào)用方法,并且可以根據(jù)需要繼續(xù)在方法的可選返回值上進(jìn)行可選鏈?zhǔn)秸{(diào)用窟感。

在下面的例子中讨彼,通過(guò)可選鏈?zhǔn)秸{(diào)用來(lái)調(diào)用Address的buildingIdentifier()方法。這個(gè)方法返回String?類型的值柿祈。如上所述哈误,通過(guò)可選鏈?zhǔn)秸{(diào)用來(lái)調(diào)用該方法哩至,最終的返回值依舊會(huì)是String?類型:
<pre>if let buildingIdentifier = john.residence?.address?.buildingIdentifier() {
print("John's building identifier is (buildingIdentifier).")
}
// 打印 “John's building identifier is The Larches.”</pre>
如果要在該方法的返回值上進(jìn)行可選鏈?zhǔn)秸{(diào)用,在方法的圓括號(hào)后面加上問(wèn)號(hào)即可:
<pre>if let beginsWithThe =
john.residence?.address?.buildingIdentifier()?.hasPrefix("The") {
if beginsWithThe {
print("John's building identifier begins with "The".")
} else {
print("John's building identifier does not begin with "The".")
}
}// 打印 “John's building identifier begins with "The".”</pre>

轉(zhuǎn)載自:Swift教程-可選鏈

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末黑滴,一起剝皮案震驚了整個(gè)濱河市憨募,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌袁辈,老刑警劉巖菜谣,帶你破解...
    沈念sama閱讀 218,755評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異晚缩,居然都是意外死亡尾膊,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)荞彼,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)冈敛,“玉大人,你說(shuō)我怎么就攤上這事鸣皂∽デ矗” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,138評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵寞缝,是天一觀的道長(zhǎng)癌压。 經(jīng)常有香客問(wèn)我,道長(zhǎng)荆陆,這世上最難降的妖魔是什么滩届? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,791評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮被啼,結(jié)果婚禮上帜消,老公的妹妹穿的比我還像新娘。我一直安慰自己浓体,他們只是感情好泡挺,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,794評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著汹碱,像睡著了一般粘衬。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上咳促,一...
    開(kāi)封第一講書(shū)人閱讀 51,631評(píng)論 1 305
  • 那天稚新,我揣著相機(jī)與錄音,去河邊找鬼跪腹。 笑死褂删,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的冲茸。 我是一名探鬼主播屯阀,決...
    沈念sama閱讀 40,362評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼缅帘,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了难衰?” 一聲冷哼從身側(cè)響起钦无,我...
    開(kāi)封第一講書(shū)人閱讀 39,264評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎盖袭,沒(méi)想到半個(gè)月后失暂,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,724評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡鳄虱,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,900評(píng)論 3 336
  • 正文 我和宋清朗相戀三年弟塞,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片拙已。...
    茶點(diǎn)故事閱讀 40,040評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡决记,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出倍踪,到底是詐尸還是另有隱情系宫,我是刑警寧澤,帶...
    沈念sama閱讀 35,742評(píng)論 5 346
  • 正文 年R本政府宣布建车,位于F島的核電站笙瑟,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏癞志。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,364評(píng)論 3 330
  • 文/蒙蒙 一框产、第九天 我趴在偏房一處隱蔽的房頂上張望凄杯。 院中可真熱鬧,春花似錦秉宿、人聲如沸戒突。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,944評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)膊存。三九已至,卻和暖如春忱叭,著一層夾襖步出監(jiān)牢的瞬間隔崎,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,060評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工韵丑, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留爵卒,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,247評(píng)論 3 371
  • 正文 我出身青樓撵彻,卻偏偏與公主長(zhǎng)得像钓株,于是被迫代替她去往敵國(guó)和親实牡。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,979評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容