Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在scala中设置int的特定范围_Scala_Range - Fatal编程技术网

在scala中设置int的特定范围

在scala中设置int的特定范围,scala,range,Scala,Range,我希望myInt只允许0到10。因此,如何在带有val类型的scala中为成员变量指定范围。只需添加require或任何在获取无效值时引发异常的内容即可解决问题 class Test(val myInt :Int){} 类测试(val myInt:Int){ require(0只需添加require或任何在获取无效值时引发异常的内容即可解决问题 class Test(val myInt :Int){} 类测试(val myInt:Int){ require(0查看一下。它允许您创建在编译时检

我希望myInt只允许0到10。因此,如何在带有val类型的scala中为成员变量指定范围。

只需添加
require
或任何在获取无效值时引发异常的内容即可解决问题

class Test(val myInt :Int){}
类测试(val myInt:Int){

require(0只需添加
require
或任何在获取无效值时引发异常的内容即可解决问题

class Test(val myInt :Int){}
类测试(val myInt:Int){
require(0查看一下。它允许您创建在编译时检查的范围类型

您的范围如下所示:

class Test(val myInt :Int){
  require(0 <= myInt && myInt <= 10)
}
您可以创建这种类型的值,如下所示:

type InMyRange = Interval.ClosedOpen[W.`0`.T, W.`10`.T]
在错误情况下:

refineMV[InMyRange](0) 
// Refined[Int, InMyRange] = 0
refineMV[InMyRange](9) 
// Refined[Int, InMyRange] = 9
refineMV[InMyRange](-1)
//(!(-1<0)和(-1<10))的左谓词失败:谓词(-1<0)没有失败
精炼MV[InMyRange](10)
//(!(10<0)&(10<10))的右谓词失败:谓词失败:(10<10)
看看。它允许您创建在编译时检查的范围类型

您的范围如下所示:

class Test(val myInt :Int){
  require(0 <= myInt && myInt <= 10)
}
您可以创建这种类型的值,如下所示:

type InMyRange = Interval.ClosedOpen[W.`0`.T, W.`10`.T]
在错误情况下:

refineMV[InMyRange](0) 
// Refined[Int, InMyRange] = 0
refineMV[InMyRange](9) 
// Refined[Int, InMyRange] = 9
refineMV[InMyRange](-1)
//(!(-1<0)和(-1<10))的左谓词失败:谓词(-1<0)没有失败
精炼MV[InMyRange](10)
//(!(10<0)&(10<10))的右谓词失败:谓词失败:(10<10)

你的意思是想在myInt上添加验证?我相信有一种方法可以通过编译时,在中键入级别编程来实现。不幸的是,我还不太熟悉,不知道如何实现。你的意思是想在myInt上添加验证?我相信有一种方法可以通过编译时,键入级别编程来实现很遗憾,我不太熟悉,不知道怎么做