簡體   English   中英

Scalaz === on some

[英]Scalaz === on Some

難以理解scalaz中===的行為

1. scala> 1.some === Some(1)
   res33: Boolean = true

2. scala> Some(1) === 1.some
   <console>:14: error: value === is not a member of Some[Int]
              Some(1) === 1.some
                      ^

3. scala> (Some(1):Option[Int]) === 1.some
   res35: Boolean = true

我可以理解(1)並且我希望偶數(2)給出相同的結果。

在(3)中,我必須將Some轉換為Option以獲得結果。

我查看了scalaz的源代碼,但無法得到它。

請解釋。

Scalaz版本= 7.1.0

Scala版本= 2.11.2

Some(1)返回Some[Int]而不是Option[Int] ; .some是返回Option[Int]而不是與scalaz樣式更兼容。 Scalaz是針對非子類型的基於ADT的編程風格編寫的,大多數scalaz類型類很少支持子類型(特別是它們通常是不變的;通常這會改善類型推斷,並且當用戶出錯時意味着更好的錯誤消息,但是支持亞型的成本較低)。 如果你正在大量使用scalaz,你可能會發現最容易使用像.some一樣的.some風格的“智能構造函數”。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM