Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/18.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
String 我如何绘制一张“地图”;“是”/&引用;";在Scala'中将列转换为布尔值;它很光滑吗?_String_Scala_Mapping_Boolean_Slick - Fatal编程技术网

String 我如何绘制一张“地图”;“是”/&引用;";在Scala'中将列转换为布尔值;它很光滑吗?

String 我如何绘制一张“地图”;“是”/&引用;";在Scala'中将列转换为布尔值;它很光滑吗?,string,scala,mapping,boolean,slick,String,Scala,Mapping,Boolean,Slick,我对Scala和Slick是新手,我发现了。我需要将“y”映射为true,将“n”映射为false,这似乎很简单。有人能告诉我怎么用吗?我现在的代码是这样的,重新发明轮子: sealed trait YesNoBoolean case object True extends YesNoBoolean case object False extends YesNoBoolean implicit val boolTypeMapper = MappedColumnT

我对Scala和Slick是新手,我发现了。我需要将“y”映射为true,将“n”映射为false,这似乎很简单。有人能告诉我怎么用吗?我现在的代码是这样的,重新发明轮子:

    sealed trait YesNoBoolean
    case object True extends YesNoBoolean
    case object False extends YesNoBoolean

    implicit val boolTypeMapper = MappedColumnType.base[YesNoBoolean, String](
      { b =>
        assertNotNull(b)
        if(b == True) "y" else "n"
      }, { i =>
        assertNotNull(i)
        if(i == "y") True else False
      }
    )
我实际上需要映射到真正的布尔类型。我有几个专栏使用这个邪恶的方案(PHP遗留)

我想我需要在表定义中这样做:

object Record extends Table[(Int,YesNoBoolean)]("record") {
  def is_usable_entry = column[YesNoBoolean]("usable_entry", O.DBType("enum('y','n')"))
...
}
试试这个

def is_usable_entry = column[Boolean]
  ("usable_entry",O.DBType("enum('y','n')"))(
    MappedColumnType.base[Boolean, String](
      if(_) "y" else "n",_=="y"
    )
  )

如果这不起作用,您可能必须拉出类型映射器并使其隐式。在这种情况下,您可能必须从导入中排除布尔值的其他隐式类型映射器(
booleanColumnType=>。

有帮助吗?谢谢,这就是类型,但我可能只需要一些使用我链接的库的示例代码。问题是映射是从用户定义的类型到标准类型的,但是我需要从一个标准类型到另一个标准类型,但是让光滑的db列类型使用该映射。我破坏了映射器,以便可以重用它:val-YesNoMapper=MappedColumnType.base[Boolean,String](if(u)“y”else“n”,“_==“y”)然后我将其添加到末尾,如下所示:def is_good=column[Boolean](“good”,O.DBType(“enum('y','n')))(YesNoMapper)注意:MappedColumnType需要Slick 2.0.0-M1或更高版本,对于早期版本,只需替换为MappedTypeMapper。