有val hm: HashMap[org.joda.time.DateTime, MyType]我想获得第一和最后DateTime借助一组hm.keys.min,并hm.keys.max分别但是编译器说No implicit Ordering defined for org.joda.time.DateTime.如何定义这个排序(隐式和显式选项都很有趣)?
我一直在
Forward reference extends over definition of value a
Run Code Online (Sandbox Code Playgroud)
尝试编译我的应用程序时出错(在SBT内).
a只是val a = "",错误是通过在a定义之前访问(函数的)特定参数来触发的.该参数是一个简单的case类类型,其中包含所有三个Option[...]类型的字段(Option[org.joda.time.DateTime]枚举值的Option中的2 和1).
什么可以"转发参考延伸超过价值的定义"意味着什么,可以采取什么方式来对抗它?
当我使用SBT 0.11编译Scala项目时,我收到有关"未选中"警告的通知,但我自己看不到警告.
我看到的是
[warn] there were 8 unchecked warnings; re-run with -unchecked for details
[warn] one warning found
Run Code Online (Sandbox Code Playgroud)
我到底是什么"用-unchecked重新运行"以及如何做到这一点?无论是compile -unchecked,也不是compile unchecked,也xsbt -unchecked似乎工作.
我需要实现这个:
static class MyStaticClass
{
public const TimeSpan theTime = new TimeSpan(13, 0, 0);
public static bool IsTooLate(DateTime dt)
{
return dt.TimeOfDay >= theTime;
}
}
Run Code Online (Sandbox Code Playgroud)
theTime是一个常数(严重:-),就像?在我的情况下,从设置中读取它是没有意义的,例如.而且我希望它能够被初始化一次并且永远不会改变.
但是C#似乎不允许函数(构造函数)初始化常量.怎么克服这个?
我想使用以下函数将Joda Time转换为Unix时间戳:
def toUnixTimeStamp(dt : DateTime) : Int = {
val millis = dt.getMillis
val seconds = if(millis % 1000 == 0) millis / 1000
else { throw new IllegalArgumentException ("Too precise timestamp") }
if (seconds > 2147483647) {
throw new IllegalArgumentException ("Timestamp out of range")
}
seconds
}
Run Code Online (Sandbox Code Playgroud)
我打算得到的时间值绝对不会毫秒精确,它们是合同的第二精确UTC,并且将作为Int进一步存储(在MySQL数据库中),标准Unix时间戳是我们公司的时间记录标准.但是Joda Time只提供getMillis而不是getSeconds,所以我必须得到一个Long毫秒精确的时间戳并将其除以1000以产生标准的Unix时间戳.
而且我很难让Scala从长值中创建一个Int.怎么做这样的演员?
任务是通过简单的CSV文件中的关键字段值查找特定字段(按行数排列)值(只是逗号分隔符,没有字段括号引号,字段内没有逗号),有标题在它的第一行.
用户uynhjl给出了一个示例(但使用不同的字符作为分隔符):
val src = Source.fromFile("/etc/passwd")
val iter = src.getLines().map(_.split(":"))
// print the uid for Guest
iter.find(_(0) == "Guest") foreach (a => println(a(2)))
// the rest of iter is not processed
src.close()
在这种情况下的问题是如何跳过解析标题行?
当我在SBT会话期间第一次运行我的项目时,它在尝试访问MySQL数据库时抛出以下异常:
java.lang.NoClassDefFoundError:scala/Ordered
当我再次运行它(以及之后的任何时间,在同一个SBT会话期间),它会抛出另一个:
java.sql.SQLException:没有为jdbc找到合适的驱动程序:mysql:// localhost/...
当我使用NetBeans时,相同的代码工作正常.现在,当我使用SBT构建和Kate手动编辑和管理我的项目时,我得到了这些运行时错误.
MySQL JDBC驱动程序(从MySQL.com下载)JAR位于项目的lib目录中,我放在那里的所有其他库都可以正常工作.
这是代码:
import java.sql._
...
// read
val dbc : Connection = DriverManager.getConnection("jdbc:mysql://localhost/...")
val st : Statement = dbc.createStatement
val rs : ResultSet = st.executeQuery("SELECT ...")
if(rs.first) result = rs.getDouble("field")
dbc.close
...
// write
val dbc : Connection = DriverManager.getConnection("jdbc:mysql://localhost/...")
val st : Statement = dbc.createStatement
st.execute("UPDATE ...")
dbc.close
Run Code Online (Sandbox Code Playgroud)
我看过一个看起来非常相关的问题,但仍然没有答案.
有像http://mvnrepository.com/这样的网站让我们搜索"工件"并给出一个定义,我可以添加到我的项目中,以便从公共存储库自动下载库.
但是这个特定的例子(mvnrepository.com)(我实际上唯一知道的工作)是定义限于"按组,工件或描述搜索",而我想按类全名搜索.例如,我想进入org.apache.commons.lang.NotImplementedException以获得<dependency org="commons-lang" name="commons-lang" rev="2.6"/>(或类似)答案.有这个设施吗?
在初始化时设置不可变hashmap内容的语法是什么?
例如,如果我愿意硬编码数组,我会写:
val a =数组(0,1,2,3)
什么是不可变哈希映射的模拟(假设我希望它包含0-> 1和2-> 3对)(在Scala 2.8中)?
什么是MySQL的SQLite 3(3.7.11)模拟
mysql -p -u username database_name < file.sql
Run Code Online (Sandbox Code Playgroud)
执行给定SQL脚本文件中针对指定数据库的所有查询?