好的,所以这是交易,我一直在谷歌搜索多年来找到解决方案,虽然有很多在那里,他们似乎没有做我正在寻找的工作.
基本上我有一个像这样结构的数组
["item 1", "item 2", "item 3", "item 4"]
Run Code Online (Sandbox Code Playgroud)
我想将其转换为哈希,所以它看起来像这样
{ "item 1" => "item 2", "item 3" => "item 4" }
Run Code Online (Sandbox Code Playgroud)
即'even'索引上的项是键,'odd'索引上的项是值.
任何想法如何干净利落地做到这一点?我想一个强力方法是将所有偶数索引拉出到一个单独的数组中,然后循环它们以添加值.
我很难理解这一点(我对Haskell仍然有点新鲜)但是我发现Text.JSON
包的文档有点令人困惑.基本上我有这种数据记录类型: -
data Tweet = Tweet
{
from_user :: String,
to_user_id :: String,
profile_image_url :: String,
created_at :: String,
id_str :: String,
source :: String,
to_user_id_str :: String,
from_user_id_str :: String,
from_user_id :: String,
text :: String,
metadata :: String
}
Run Code Online (Sandbox Code Playgroud)
我有一些JSON格式的推文符合这种类型的结构.我正在努力的是如何将上面的内容映射到从以下代码返回的内容
decode tweet :: Result JSValue
Run Code Online (Sandbox Code Playgroud)
进入上面的数据类型.我明白我应该创建一个实例,instance JSON Tweet
但我不知道从那里去哪里.
任何指针都将非常感谢,谢谢!
在Clojure中有更好的方法吗?
daniel=> (reverse "Hello")
(\o \l \l \e \H)
daniel=> (apply str (vec (reverse "Hello")))
"olleH"
Run Code Online (Sandbox Code Playgroud)
apply $ str $ vec
每次要将字符串反转回原始形式时,是否必须执行此操作?
我花了几个小时谷歌搜索一些东西,允许我在Scala中打开Zip文件(我知道你可以使用Java API,但我希望找到一个Scala友好的包装器,而不是写关于编写Buffered/FileInputstream等)
所以我只是在REPL中乱搞并发现了这个包
scala.tools.nsc.io.ZipArchive
Run Code Online (Sandbox Code Playgroud)
经过一些挖掘和使用后scala.tools.nsc.io.File
,我设法打开了一个包含所有Scala优点的zip存档(能够foreach
等)
事情是我在官方Scala 2.8.1 API文档中看不到任何提及这个包,所以我只是想知道为什么没有文档呢?它是什么?
我试图将一个字符串"分组"成段,我想这个例子会更加简洁地解释它
scala> val str: String = "aaaabbcddeeeeeeffg"
... (do something)
res0: List("aaaa","bb","c","dd","eeeee","ff","g")
Run Code Online (Sandbox Code Playgroud)
我可以通过几种方式以命令式的方式执行此操作(使用vars
并单步执行字符串以查找组)但我想知道是否可以获得更好的功能解决方案?我一直在浏览Scala API,但似乎没有适合我需求的东西.
任何帮助,将不胜感激
为了帮助我学习Applicative Functors和Functors,我认为看看如何Either
用类型类Functor
和函数实现它会很有趣Applicative
.显然我可以继续阅读代码,但我发现自己尝试实现一些东西以更好地理解事物更有用.
仅供参考我正在尝试实现此演示文稿结果的Haskell版本http://applicative-errors-scala.googlecode.com/svn/artifacts/0.6/chunk-html/index.html
无论如何,这是我到目前为止所拥有的
data Validation a b = Success a | Failure b deriving (Show, Eq)
instance Functor (Validation a) where
fmap f (Failure x) = Failure x
fmap f (Success x) = Success (f x)
Run Code Online (Sandbox Code Playgroud)
但每当我尝试运行此命令时,ghci
我只会收到以下错误消息: -
[1 of 1] Compiling Main ( t.hs, interpreted )
t.hs:5:35:
Couldn't match type `b' with `a1'
`b' is a rigid type variable bound by
the type signature for
fmap :: (a1 -> …
Run Code Online (Sandbox Code Playgroud) 我在使用Clojure下载图像时遇到问题,以下代码的工作方式似乎存在问题: -
(defn download-image [url filename]
(->> (slurp url) (spit filename)))
Run Code Online (Sandbox Code Playgroud)
这将"下载"文件到我指定的位置,但是我试图用它打开它的任何图像应用程序都无法读取该文件(例如,尝试在Web浏览器中打开它只是返回一个空白页面,尝试打开它预览(osx)说这是一个损坏的文件)
我想这可能是因为slurp
应该只用于文本文件而不是二进制文件
有人能指出我正确的方向让我的代码正常工作吗?任何帮助将不胜感激!
我知道这在程序员中是一个相当有争议的问题,但在开发时我喜欢我的IDE来定位方法/接口/控制声明下面的开头花括号,为了说明目的: -
这就是Xcode自动生成骨架方法{最后: -
-(void) isTrue:(BOOL)input {
if(input) {
return YES;
}
else {
return NO;
}
}
Run Code Online (Sandbox Code Playgroud)
这就是我喜欢布置代码的方式(我相信这叫做Allman风格): -
-(void) isTrue:(BOOL)input
{
if(input)
{
return YES;
}
else
{
return NO;
}
}
Run Code Online (Sandbox Code Playgroud)
我只是想知道Xcode中是否有任何配置开关来实现这种开发方式?在键入if
/ else
语句时它真的很烦人,因为它倾向于使用行末尾自动完成else
子句,{
如果你喜欢在下面进行开发,那么看起来很傻.
还是我不合理?Objective-C是否应该遵守Apple定义的标准?
注意:我是业余的后端(Java)开发人员,在业余时间在Clojure工作,请原谅我的无知.
我正试图了解Clojurescript,以及它如何可能适合我正在进行的项目,或计划在未来继续工作.我已经成长为"经典"Web开发思维模式(例如Clojure运行后端,通过JSON将数据分发到前端以在JS中处理或返回HTML页面以供浏览器渲染),我遇到了麻烦试图了解Clojurescript如何使事情比这个模型更好.
任何人都可以向我解释一下Clojurescript/Clojure开发的一般方法是什么,因为"Clojurescript One"项目名称表示应用程序开发将统一在一种语言下(如此)
任何帮助将不胜感激,或者如果有人能指出我的某些图表或解释或任何东西 - 这也会很棒!
如果我有这个简单的程序说
List<String> input = Arrays.asList("1", "2", "3");
List<String> result = input.stream()
.map(x -> x + " " + x)
.filter(y -> !y.startsWith("1"))
.collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)
在幕后它的工作方式如a)或b)
一个
map
"1" + " " + "1"
"2" + " " + "2"
"3" + " " + "3"
filter
"1 1" does not begin with "1"? = false
"2 2" does not begin with "1"? = true
"3 3" does not begin with "1"? = true
collect
add "2 2" to list
add "3 …
Run Code Online (Sandbox Code Playgroud)