setopts(Opts) -> ok | {error, Reason}
setopts(IoDevice, Opts) -> ok | {error, Reason}
IoDevice = device()
Opts = [setopt()]
Reason = term()
设置标准 I/O 设备 (IoDevice
) 的选项。
可能的选项和值因 I/O 设备而异。要获取特定 I/O 设备上支持的选项及其当前值的列表,请使用函数getopts/1
.
OTP I/O 设备支持的选项和值如下:
binary
,list
, or{binary, boolean()}
-
如果设置为二进制模式(
binary
或者{binary, true}
),I/O 服务器发送二进制数据(以 UTF-8 编码)作为对get_line
,get_chars
,并且,如果可能的话,get_until
请求(有关详细信息,请参阅部分Erlang I/O 协议)在用户指南中)。立竿见影的效果就是get_chars/2,3
和get_line/1,2
返回受影响 I/O 设备的 UTF-8 二进制文件而不是字符列表。默认情况下,OTP 中的所有 I/O 设备均设置为
list
模式。但是,I/O 函数可以处理任何这些模式,因此其他 user-written 模块也应该充当 I/O 服务器的客户端。标准 shell (
group.erl
)、'oldshell' (user.erl
) 和文件 I/O 服务器支持此选项。 {echo, boolean()}
-
表示终端是否回显输入。仅支持标准 shell I/O 服务器 (
group.erl
) {expand_fun, expand_fun()}
-
为 tab-completion(扩展)提供类似 Erlang shell 的函数。当用户按下按钮时调用此函数标签钥匙。当调用 line-reading 函数时,扩展处于活动状态,例如
get_line/1,2
.该函数以当前行(直到光标)作为反转字符串调用。它返回一个三元组:
{yes|no, string(), list()}
。第一个元素会发出蜂鸣声,如果no
,否则展开是静默的;第二个是将在光标位置输入的字符串;第三个是可能的扩展列表。如果此列表不为空,则将其打印在当前输入行下方。可能的扩展列表可以以不同的方式格式化,以使更高级的扩展建议对用户来说更容易阅读,请参阅edlin_expand:expand/2
的文档。简单的示例(除了空行之外的任何内容都会发出蜂鸣声,空行会扩展为
"quit"
):fun("") -> {yes, "quit", []}; (_) -> {no, "", ["quit"]} end
此选项仅受标准 shell (
group.erl
) 支持。 {encoding, latin1 | unicode}
-
指定字符如何从 I/O 设备输入或输出到 I/O 设备,这意味着,例如,将终端设置为处理 Unicode 输入和输出,或者将文件设置为处理 UTF-8 数据编码。
该选项不影响数据从 I/O 函数返回的方式或如何在 I/O 协议中发送数据,它仅影响 I/O 设备如何处理 "physical" 设备的 Unicode 字符。
系统启动时,标准 shell 设置为
unicode
或latin1
编码。编码是在类 Unix 系统上借助LANG
或LC_CTYPE
环境变量设置的,或者在其他系统上通过其他方式设置的。因此,用户可以输入 Unicode 字符,并且如果 I/O 设备支持,则 I/O 设备处于{encoding, unicode}
模式。如果运行时系统的假设错误,可以通过设置此选项来更改模式。注意在 OTP 26.0 之前,当 Erlang 启动时
-oldshell
或者-noshell
标志(例如,在escript
),默认编码为standard_io
被设置为latin1
,这意味着任何大于代码点 255 的字符都被转义,并且输入预计为纯 8 位 ISO Latin-1。自 OTP 26.0 起,standard_io
始终默认为unicode
如果支持,否则latin1
.如果您想发送原始字节
standard_io
,您现在总是需要显式地将编码设置为latin1
;否则,代码点 128-255 将转换为 UTF-8。最好通过设置内核配置参数来完成此操作standard_io_encoding到latin1
.文件也可以在
{encoding, unicode}
中设置,这意味着数据以 UTF-8 格式写入和读取。文件可以有更多编码,请参见下文。标准 shell(
group.erl
包括 Windows 上的werl
)、'oldshell' (user.erl
) 和文件 I/O 服务器均支持{encoding, unicode | latin1}
。 {encoding, utf8 | utf16 | utf32 | {utf16,big} | {utf16,little} | {utf32,big} | {utf32,little}}
-
对于磁盘文件,编码可以设置为各种 UTF 变体。其效果是,数据预计以指定的编码从文件中读取,并且数据以指定的编码写入磁盘文件。
{encoding, utf8}
对文件具有与{encoding, unicode}
相同的效果。扩展编码仅在磁盘文件上受支持(通过函数打开)
file:open/2
)。
相关用法
- erlang setopts(Socket, Options)用法及代码示例
- erlang setelement(Index, Tuple1, Value)用法及代码示例
- erlang set_token(Token)用法及代码示例
- erlang self用法及代码示例
- erlang select(Table, MatchSpec)用法及代码示例
- erlang select_replace(Table, MatchSpec)用法及代码示例
- erlang select_reverse(Continuation)用法及代码示例
- erlang send_request(Node, Module, Function, Args)用法及代码示例
- erlang seq(From, To)用法及代码示例
- erlang seed(A1, A2, A3)用法及代码示例
- erlang select(Tab, Spec)用法及代码示例
- erlang sin用法及代码示例
- erlang str用法及代码示例
- erlang substr用法及代码示例
- erlang sort用法及代码示例
- erlang sublist用法及代码示例
- erlang sum用法及代码示例
- erlang split_binary用法及代码示例
- erlang spawn用法及代码示例
- erlang spawn on Node用法及代码示例
- erlang spawnlink用法及代码示例
- erlang safe_fixtable(Table, Fix)用法及代码示例
- erlang split(Filename)用法及代码示例
- erlang size(Item)用法及代码示例
注:本文由纯净天空筛选整理自erlang.org大神的英文原创作品 setopts(Opts) -> ok | {error, Reason}。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。