根据Elixir Enumerables和Streams教程:
|>符号是管道操作符:它只是从左侧的表达式获取输出,并将其作为右侧函数调用的输入传递.
Enum模块中的所有功能都非常渴望.
那么以下陈述的区别是什么?为什么最后一个会返回不同的结果?
iex(1)> 1..1_000 |> Enum.reverse |> Enum.take 5
[1000, 999, 998, 997, 996]
iex(2)> (Enum.reverse 1..1_000) |> Enum.take 5
[1000, 999, 998, 997, 996]
iex(3)> Enum.reverse 1..1_0000 |> Enum.take 5
[5, 4, 3, 2, 1]
Run Code Online (Sandbox Code Playgroud) 我正试图在Phoenix的一个API调用中返回一些JSON数据.我正在获取所有记录Subject并发送它们但Ecto返回一些我不想要的额外字段.
我能做些什么:
id和name)__meta__和__owner__)这是我的Controller:
# Controller
def index(conn, _) do
subjects = Subject |> Repo.all
conn |> render subjects: subjects
end
Run Code Online (Sandbox Code Playgroud)
这是我的View:
# View
def render("index.json", %{subjects: subjects}) do
subjects
end
Run Code Online (Sandbox Code Playgroud)
这是我的回答:
[
{
"teachers": {
"__owner__": "Elixir.MyApp.Subject",
"__field__": "teachers",
"__cardinality__": "many"
},
"updated_at": "2015-06-20T15:32:20Z",
"topics": {
"__owner__": "Elixir.MyApp.Subject",
"__field__": "topics",
"__cardinality__": "many"
},
"name": "Physics",
"inserted_at": "2015-06-20T15:32:20Z",
"id": 1,
"__meta__": {
"state": …Run Code Online (Sandbox Code Playgroud) 我在elixir应用程序中有一个方法,比方说Some.Module.func/1,它会返回两个数字的元组.我在ExUnit中编写测试,只需要测试元组中的第一个元素,而不是真正关心第二个元素.
到目前为止,我已经尝试过这样做:
test "some method" do
assert Some.Module.func(45) == {54, _}
end
Run Code Online (Sandbox Code Playgroud)
但是我在运行测试时遇到了这个错误:
Compiled lib/some.ex
Generated some app
** (CompileError) test/some_test.exs:7: unbound variable _
(stdlib) lists.erl:1353: :lists.mapfoldl/3
(stdlib) lists.erl:1354: :lists.mapfoldl/3
Run Code Online (Sandbox Code Playgroud)
为什么这不起作用,如何在测试中忽略不需要的结果?
我试图了解如何在 Java 中正确“扩展”第 3 方库(包括类和接口)以及如何简单地将它们用作替代品。
我目前正在使用Twitter4J图书馆。现在我必须手动添加每次调用方法@的结果:getScreenName()User
twitter4j.User user = getTwitterUser();
String userHandle = "@" + user.getScreenName();
Run Code Online (Sandbox Code Playgroud)
我目前已经尝试了一些东西,但没有任何效果。这是我想出的:
package my.app;
public abstract class User implements twitter4j.User {
public String getHandle() {
return "@" + getScreenName();
}
}
Run Code Online (Sandbox Code Playgroud)
像这样称呼它:
User user = (User) getTwitterUser();
String userHandle = user.getHandle();
Run Code Online (Sandbox Code Playgroud)
这与消息崩溃:
java.lang.ClassCastException: twitter4j.UserJSONImpl cannot be cast to my.app.User
Run Code Online (Sandbox Code Playgroud) 在elixir中是否有一种方法可以获得与array_keysPHP 类似的所有映射键?我一直在寻找,但似乎无法找到办法.
或者还有另一种获得独特价值的方法吗?我正在为地图中的键指定名称,其值为1仅获取不同的值.然后我想获得只检索唯一值的键.
我正在使用此代码来创建我的地图:
names = Enum.reduce lines, %{}, fn line, acc ->
Map.put(acc, line.name, 1)
end
Run Code Online (Sandbox Code Playgroud)
例如,我有两行line.name作为测试.我希望最终结果只返回测试.或者如果它们不同,则将它们分开归还,然后使用类似的东西enum.join来组合它们
Enum.join(names, " - ")
Run Code Online (Sandbox Code Playgroud) 从mix deps文档中:
:runtime-依赖项是否是运行时应用程序的一部分。如果您的mix.exs文件中:applications没有提供密钥def application,则Mix会自动将所有依赖项作为运行时应用程序包括在内,除非runtime: false给出了。默认为true。
根据mix compile.app文档:
:applications-您的应用程序在运行时依赖的所有应用程序。默认情况下,此列表是根据您的依赖项自动推断出来的。Mix和其他工具使用应用程序列表来启动依赖关系,然后再启动应用程序本身。
这是否意味着添加runtime: false依赖项将使其不能作为应用程序监视树的一部分启动,但其功能将在编译时可用?
我有一个Resource可以使用"Acts As Votable"宝石(Github页面)投票的模型.投票系统运作完美,但我试图按votes每个Resource有多少页面显示页面.
目前我的控制器根据标签提取资源,而不是订购:
@resources = Resource.where(language_id: "ruby")
Run Code Online (Sandbox Code Playgroud)
如果我获取一个单独的资源并调用"@ resource.votes.size",它将返回它有多少票.但是,投票是另一个表,所以我认为需要进行某种联接,但我不知道如何做.我需要的是一个很好的有序ActiveRecord集合,我可以这样显示?
书名 - 19票
书名 - 15票
书名 - 9票
书名 - 8票
我按照401-ActionController-Live Railscast和这篇博客文章关于Server-Sent-Events在我的Rails应用程序中设置类似的内容.当我打开与服务器的连接时,只有使用puma但是puma + nginx,在发送第一个数据块后连接关闭时,它才能正常工作.
我也尝试过按照这些问题提供的解决方案,但它们对我不起作用:
这就是我得到的:

这是我如何设置我的服务器,这是我当前的nginx配置:
upstream puma {
server unix:///home/deploy/apps/outy/shared/tmp/sockets/outy-puma.sock;
keepalive 16;
}
server {
listen 80 default_server deferred;
root /home/deploy/apps/outy/current/public;
access_log /home/deploy/apps/outy/current/log/nginx.access.log;
error_log /home/deploy/apps/outy/current/log/nginx.error.log info;
location ^~ /assets/ {
gzip_static on;
expires max;
add_header Cache-Control public;
}
try_files $uri/index.html $uri @puma;
location @puma {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_pass http://puma;
proxy_http_version 1.1;
proxy_set_header Connection ""; …Run Code Online (Sandbox Code Playgroud) 如何检查Elixir模块是否暴露了特定的公共方法?如何检查该功能是否已被特定曝光arity?
不起作用:
Map.methodsMap.functionsMap.has_function(:keys)我有一个长生不老药Map:
m1 = %{a: 1, b: "fsfd", c: 123}
Run Code Online (Sandbox Code Playgroud)
我想将其转换为 的查询字符串URI。
a=1&b=fsfd&c=123
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?我试过这个:
Enum.reduce(m1, fn({k, v}, acc) -> "#{acc}&{k}=#{v}" end)
Run Code Online (Sandbox Code Playgroud)
但它不起作用,因为acc没有按预期进行模式匹配。
elixir ×7
activerecord ×1
casting ×1
ecto ×1
elixir-mix ×1
erlang-otp ×1
ex-unit ×1
java ×1
mysql ×1
nginx ×1
puma ×1
reduce ×1
ruby ×1
sql ×1
twitter4j ×1
unit-testing ×1