据我所知,LINQ支持的唯一内容是Scala目前不支持其集合库,它是与SQL数据库的集成.
据我了解LINQ可以"收集"各种操作和查询到那里处理它的时候可以给"整"语句到数据库,防止一个简单的SELECT第一张全表到虚拟机的数据结构.
如果我错了,我会很乐意纠正.
如果没有,在Scala中支持相同的内容是什么?
是不是可以编写一个实现集合接口的库,但是没有任何数据结构支持它,但是一个String,它将后续集合组装到所需的Database语句中?
或者我的观察完全错了?
我想知道,为什么我不能编译这个:
class MyClass{
override def toString = "123:" + if (true) "456" else "789"
//error: illegal start of simple expression
}
Run Code Online (Sandbox Code Playgroud) 我是 Haskell 的新手,英语也不是我的第一语言,所以请不要因为一些错字或因为问题表述不当而对这篇文章进行评分:对我来说,这是一场真正的斗争。
无论如何:我正在尝试生成随机坐标(Int,Int),然后在另一个 Haskell 函数中使用它。但是我在将 IO 函数结果“导出”到第二个纯类型 Haskell 函数时遇到了一些问题。
这是我认为并希望正确说明我的问题的一个例子:
genRandomPair = genRandNr
genRandNr :: IO (Int,Int)
genRandNr = do
firstRandom <- randomRIO (1,10)
secondRandom <- randomRIO (1,10)
return (firstRandom,secondRandom)
Run Code Online (Sandbox Code Playgroud)
如果它不明显genRandNr,genRandomPair那是我的问题。
我将非常感谢所有友好的投入。
请注意:非常高级的代码解释不会真正帮助我,因为我处于初学者水平,直到一周前从未在 Haskell 中使用过 monad 或 IO。
我有两个源文件,它们的作用大致相同。唯一的区别是,在第一种情况下,函数作为参数传递,而在第二种情况下,函数作为参数传递。
\n第一种情况:
\nmodule Main where\n\nimport Data.Vector.Unboxed as UB\nimport qualified Data.Vector as V\n\nimport Criterion.Main\n\nregularVectorGenerator :: (Int -> t) -> V.Vector t\nregularVectorGenerator = V.generate 99999\n\nunboxedVectorGenerator :: Unbox t => (Int -> t) -> UB.Vector t\nunboxedVectorGenerator = UB.generate 99999\n\nmain :: IO ()\nmain = defaultMain\n [\n bench "boxed" $ whnf regularVectorGenerator (+2137)\n , bench "unboxed" $ whnf unboxedVectorGenerator (+2137)\n ]\nRun Code Online (Sandbox Code Playgroud)\n第二种情况:
\nmodule Main where\n\nimport Data.Vector.Unboxed as UB\nimport qualified Data.Vector as V\n\nimport Criterion.Main\n\nregularVectorGenerator :: Int -> V.Vector Int\nregularVectorGenerator = flip V.generate …Run Code Online (Sandbox Code Playgroud) 我试图使用 Haskell 从系统时钟获取当前 POSIX 时间,但出现以下错误:
\n \xe2\x80\xa2 No instance for (Show (IO POSIXTime))\n arising from the sixth field of \xe2\x80\x98Block\xe2\x80\x99 (type \xe2\x80\x98IO POSIXTime\xe2\x80\x99)\n Possible fix:\n use a standalone 'deriving instance' declaration,\n so you can specify the instance context yourself\n \xe2\x80\xa2 When deriving the instance for (Show Block)\n |\n16 | , nonce :: Maybe Integer } deriving Show\n | ^^^^\nRun Code Online (Sandbox Code Playgroud)\n这是上下文的代码:
\nimport Data.Time\nimport Data.Time.Clock.POSIX\n\ndata Transaction = Transaction { from :: String\n , to :: String\n , value :: Float …Run Code Online (Sandbox Code Playgroud) 假设我有以下2个功能相同的代码片段,它们返回列表中也包含其反转的字符串:
var a = Array("abc", "bca", "abc", "aba", "cba")
a.filter(x => a.toSet(x.reverse)).distinct
Run Code Online (Sandbox Code Playgroud)
和
var a = Array("abc", "bca", "abc", "aba", "cba")
var aSet = a.toSet // notice that toSet is called outside filter
a.filter(x => aSet(x.reverse)).distinct
Run Code Online (Sandbox Code Playgroud)
我想知道这些片段之间的时间复杂度是否存在差异,因为在第一个片段中我调用.toSet了每个元素a,而在第二个片段中我只在开头调用它.然而,话虽如此,有些东西告诉我编译器可能会优化第一个调用,从而产生相当于时间复杂度的2个片段.
如果后者是真的,你能否请我参考一些相关的文献?
谢谢.
我是斯卡拉的新手.我正在尝试创建一个扩展抽象类的Object,如下面的show所示
object Conversions extends UnitConversions
{
override def inchesToCentimeters(inches:Int) = inches * 2.5
override def gallonsToLiters(gallons:Int) = gallons * 3.78
override def milesToKilometers(miles:Int) = miles * 1.6
}
abstract class UnitConversions
{
def inchesToCentimeters(inches:Int)
def gallonsToLiters(gallons:Int)
def milesToKilometers(miles:Int)
}
Run Code Online (Sandbox Code Playgroud)
当我尝试访问对象的成员函数时,我得()这个表达式作为输出.
Conversions.milesToKilometers(20) //I get output ()
Run Code Online (Sandbox Code Playgroud)
更多是以下声明有效???
var ucv:UnitConversions = new Conversions
println(ucv.milesToKilometers(3)) // I get output () here as well
Run Code Online (Sandbox Code Playgroud)
提前致谢 !
scala ×4
haskell ×3
benchmarking ×1
c# ×1
database ×1
io ×1
linq ×1
object ×1
optimization ×1
performance ×1
scalaquery ×1