- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在处理 this exercism problem并尝试从位串中提取 7 位,在字节的开头附加一个前导/标记位,并将两者附加到另一个累加器位串的开头。
在此过程中,我偶然发现了一个令人困惑的错误,如果我尝试指定已经是位字符串的内容的大小,则该错误被称为 ArgumentError
,毫无帮助。
这是一个例子:
iex(28)> a = <<64::size(7)>>
<<64::size(7)>>
iex(29)> b = <<1::size(1)>>
<<1::size(1)>>
iex(30)> <<b::size(1), a::size(7)>>
** (ArgumentError) argument error while evaluating iex at line 30
(stdlib 4.0) eval_bits.erl:143: :eval_bits.eval_exp_field/6
(stdlib 4.0) eval_bits.erl:77: :eval_bits.create_binary/2
(stdlib 4.0) eval_bits.erl:68: :eval_bits.expr_grp/5
(stdlib 4.0) erl_eval.erl:543: :erl_eval.expr/6
(iex 1.13.4) lib/iex/evaluator.ex:310: IEx.Evaluator.handle_eval/3
iex(30> # of course, this works
iex(30)> <<b::bitstring, a::bitstring>>
<<192>>
为什么我不能指定位串的大小?这似乎对于捕获意外的大小很有用。
为什么错误消息如此无用?
最佳答案
请参阅 Types
<<>>
部分文档:
When no type is specified, the default is
integer
<<a::size(7)>>
相当于 <<a::integer-size(7)>>
,这是不正确的,因为 a
是一个位串,而不是一个整数。正确的语法是 <<a::bitstring-size(7)>>
(或为简洁起见 <<a::bits-size(7)>>
)。
举个例子:
iex> <<b::bits-size(1), a::bits-size(7)>>
<<192>>
另一个例子:
iex> <<prefix::bits-size(4), _::bits>> = <<0b11110000>>
<<240>>
iex> <<_::bits-size(4), suffix::bits-size(4)>> = <<0b00001111>>
<<15>>
iex> <<prefix::bits-size(4), suffix::bits-size(4)>>
<<255>>
但正如 Aleksei 所说,一般来说,使用整数而不是位串更简单:
iex> <<1::1, 64::7>>
<<192>>
why is the error message so unhelpful?
可能是由于 OTP 在生成友好错误消息方面的限制,并且直到最近才有人专注于改进它。正如 sabiwara 在评论中提到的,这是从 OTP 25 改进的和 Elixir 1.14 :
Improved and more detailed error messages when binary construction with the binary syntax fails.
和
These improvements apply to Elixir as well. Before v1.14, errors when constructing binaries would often be hard-to-debug generic "argument errors"
关于elixir - 如果我在尝试构建 Elixir 位串时指定现有位串的大小,则会出现参数错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73386764/
我正在尝试在具有多个轴的 matplotlib 上显示悬停标签。 我正在使用 python 3.6.8 和 matplotlib 3.0.3 我的情节有多个轴,我查看了这篇文章中的示例: Possib
我有这个: 1.test fred 5 <i>(9.5h)</i> 我看到的是这样的: 我无法更改跨度标签,它是 fullcalendar 的一部分。我该怎么做才能看到斜体而不
如何制作这个标签单击复选框时出现?现在它是隐藏的。 Bark Bark Hear a dog CSS: .bark{ visibility: hidden } input[type="checkb
我是编码初学者,我需要以下代码的帮助。我正在努力制作“你输了!”标签在计时器为零后出现,但是当我尝试这样做时;它没有显示任何内容。请帮助我! class Game: SKScene { let
实际上,在 api 调用之前,只有 Label 可见且为空文本。获得响应后标签字符计数大于零。但是这里如何等待字符数大于零的标 checkout 现并执行某些操作。 这是我使用的代码,但我收到谓词错误
我正在使用以下 HTML 代码: hr { border: none; border-top: 3px double #333; color: #333; overflow: visi
我想去掉特定标记的出现,保持内部 XML 完好无损。我想一次完成(而不是搜索、替换并再次从头开始)。例如,来自源: Content Here More Her
我正在尝试弄清楚如何让 slider 说出两个不同的内容。我希望 slider 上方的输入以 1.25 美元的二十步表示美元金额(20 到 45 之间)——但我希望实际句柄只说单个整数答案,如 1..
我正在使用 matplotlib 基于数据框制作步骤图,但我希望显示数据框的键/值之一( signals_df['Gage'] ),而不是坐标作为注释,但我总是收到错误:AttributeError:
有什么方法可以让我看到所有标签吗?正在绘制所有点,工具提示正确显示标签和值,但 X 轴上的所有标签都不可见。 最佳答案 是的,有办法。您需要将 x 轴刻度的 autoSkip 属性设置为 false,
我是一名优秀的程序员,十分优秀!