在灵丹妙药中我们有地图:
> map = %{:a => "one", :b => "two"} # = %{a: "one", b: "two"}
> map.a # = "one"
> map[:a] # = "one"
Run Code Online (Sandbox Code Playgroud)
我们还有关键字列表:
> kl = [a: "one", b: "two"] # = [a: "one", b: "two"]
> kl2 = [{:a, "one"},{:b, "two"}] # = [a: "one", b: "two"]
> kl == kl2 # = true
> kl[:a] # = "one"
> kl.a # = ** (ArgumentError)
Run Code Online (Sandbox Code Playgroud)
两个为什么?
句法?是因为关键字列表具有更灵活的语法,允许它们被定义为没有卷曲,甚至没有括号作为函数调用的最后一个参数?那为什么不给这个语法糖吗?
重复密钥?是因为关键字列表可以有重复的键吗?为什么要同时使用Map样式访问和重复键?
性能?是因为关键字列表有更好的表现吗?那为什么要有地图?并且不应该通过键查找成员比使用元组列表更高效吗?
JS Array和Ruby Hash一样外观? …
目前正试图了解Elixir中的"^"运算符.来自网站:
当没有兴趣重新绑定变量而是匹配匹配之前的值时,可以使用pin运算符^:
来源 - http://elixir-lang.org/getting_started/4.html
考虑到这一点,您可以将新值附加到符号,如下所示:
iex> x = 1 # Outputs "1"
iex> x = 2 # Outputs "2"
Run Code Online (Sandbox Code Playgroud)
我也可以这样做:
iex> x = x + 1 # Outputs "3"!
Run Code Online (Sandbox Code Playgroud)
所以我的第一个问题是; Elixir变量是否可变? 看起来确实如此......在函数式编程语言中,这应该是不可能的?
所以现在我们来到"^"运算符......
iex> x = 1 # Outputs "1"
iex> x = 2 # Outputs "2"
iex> x = 1 # Outputs "1"
iex> ^x = 2 # "MatchError"
iex> ^x = 1 # Outputs "1"
Run Code Online (Sandbox Code Playgroud)
我认为"^"的效果是将"x"锁定到绑定到它的最后一个值.这就是它的全部吗?为什么不确保所有'匹配'/赋值都像Erlang本身一样不可变?
我刚刚习惯了......
erlang functional-programming immutability elixir variable-assignment
有没有办法通过刷新或导航离开页面来检测客户端何时断开与流星服务器的连接,以便服务器可以尝试进行一些清理?
我最近开始学习一个haskell并且度过了非常愉快的时光.我一直在解决一些项目Euler问题,以掌握语法,并一直在审查http://www.haskell.org/haskellwiki/Euler_problems/1_to_10作为学习工具发布的解决方案.虽然我发现自己无法绕过针对问题#3发布的解决方案:
-- Find the largest prime factor of 317584931803.
primes = 2 : filter ((==1) . length . primeFactors) [3,5..]
primeFactors n = factor n primes
where
factor n (p:ps)
| p*p > n = [n]
| n `mod` p == 0 = p : factor (n `div` p) (p:ps)
| otherwise = factor n ps
problem_3 = last (primeFactors 317584931803)
Run Code Online (Sandbox Code Playgroud)
我无法弄清楚我的生活是如何运作的.primes并且primeFactors似乎在互相打电话来建立他们自己的清单并试图跟随它腌制我的大脑.任何人都知道关于这个解决方案的好博客文章,或者想在这里写一个关于它的解释?
我正在凤凰城写一个简单的crud应用程序.如何在不使用javascript的情况下从表单提交PATCH和DELETE请求?
我正在构建一个具有自己的自定义chrome的应用程序.我通过设置标志关闭了默认窗口边框:
this->setWindowFlags(Qt::FramelessWindowHint);
Run Code Online (Sandbox Code Playgroud)
设置此标志并关闭默认窗口边框后,任何调用:
this->showMaximized();
Run Code Online (Sandbox Code Playgroud)
导致占据整个屏幕的窗口,与任务栏重叠.对于我应该调用的这个或另一个方法而不是showMaximized(),是否有共同的工作?
WIN7/Qt4.6
是否有任何方法可以为组件创建自定义css值并使其可用于组件正在使用的外观类?例如,如果我在css文件中定义它:
s|Panel{
skinClass: ClassReference("PanelSkin");
myCustomValue: #CCCCFF;
}
Run Code Online (Sandbox Code Playgroud)
有没有办法myCustomValue提供PanelSkin?
所以我有一个名为Photoset的模型类和一个名为Sets的控制器.我有资源:除了从模型实例生成路径之外,设置为所有事情工作.例如,如果我使用:
<%= form_for(@photoset) do |f| %>
Run Code Online (Sandbox Code Playgroud)
我收到错误:
no route matches {:controller=>"sets"}
Run Code Online (Sandbox Code Playgroud)
最终我希望所有的uris都是.../sets/...(控制器名称)而不是.../photosets/...(型号名称)
有没有办法做到这一点,仍然可以使用助手?
--EDIT--继承 我的佣金路线输出:
sets GET /sets(.:format) {:controller=>"sets", :action=>"index"}
POST /sets(.:format) {:controller=>"sets", :action=>"create"}
new_set GET /sets/new(.:format) {:controller=>"sets", :action=>"new"}
edit_set GET /sets/:id/edit(.:format) {:controller=>"sets", :action=>"edit"}
set GET /sets/:id(.:format) {:controller=>"sets", :action=>"show"}
PUT /sets/:id(.:format) {:controller=>"sets", :action=>"update"}
DELETE /sets/:id(.:format) {:controller=>"sets", :action=>"destroy"}
Run Code Online (Sandbox Code Playgroud)
这一切都只是花花公子,问题是当我尝试从模型的实例构建一个表单.我知道rails无法知道我试图将Photoset模型直接与Set控制器绑定,但我不知道如何指定它.
2个问题.
1)在Javascript中编写脚本时是否可以按原样使用LitJson库?这是一个关于能够在javascript源代码中使用c#source的一般问题.
2)我是c#dev的新手.我似乎无法让LitJson启动并运行.以下代码抛出此错误:An object reference is required to access non-static memberLitJson.JsonReader.Read()'`
using UnityEngine;
using System.Collections;
public class Loadr : MonoBehaviour {
string url= "http://developer.echonest.com/api/v4/artist/images?api_key=N6E4NIOVYMTHNDM8J&id=ARH6W4X1187B99274F&format=json&results=1&start=0&license=unknown";
void Start (){
WWW www = new WWW(url);
print(www.text);
Object a = LitJson.JsonReader.Read(www.text);
print(a.response.status);
}
}
Run Code Online (Sandbox Code Playgroud)
有什么想法吗?