method Encoder.writeF64
Writes a floating point number.
Example:
use std.ser { encode, bytesOf, Format, Encoder, Decoder }
// a debugging text format that prints every event it receives
data Log { out: String }
impl Encoder for Log {
var fn beginMessage(name: str) { out.push("<{name}") }
var fn endMessage() { out.push(">") }
var fn field(tag: u32, name: str) { out.push(" {tag}:{name}=") }
var fn writeI64(v: i64) { out.push("i{v}") }
var fn writeU64(v: u64) { out.push("u{v}") }
var fn writeF64(v: f64) { out.push("f{v}") }
var fn writeBool(v: bool) { out.push(if v { "T" } else { "F" }) }
var fn writeStr(v: str) { out.push("'{v}'") }
var fn writeBytes(v: bytes) { out.push("b{v.len()}") }
var fn writeNull() { out.push("null") }
var fn beginList(len: usize) { out.push("[{len}:") }
var fn endList() { out.push("]") }
var fn beginMap(len: usize) { out.push("{{{len}:") }
var fn endMap() { out.push("}}") }
var fn finish() -> bytes {
let text = out.freeze()
bytesOf(&text)
}
}
data NoDecoder {}
impl Decoder for NoDecoder {}
data LogFormat {}
impl Format for LogFormat {
fn name() -> str => "log"
fn encoder() -> Encoder => Log{ out: String.new() }
fn decoder(input: bytes) -> Decoder => NoDecoder{}
}
fn show<T: Serializable>(x: T) -> str {
comptime { std.ser.register(LogFormat) }
match encode(x, LogFormat) {
bytes b => {
match Utf8.decode(b) {
str t => t
DecodeError _ => "?"
}
}
EncodeError _ => "encode error"
}
}
data N { v: f64 }
fn main() io {
print(show(N{ v: 0.5 }))
}Вывод
<N 1:v=f0.5>
var fn writeF64(v: f64)С версии. 1.0.0-beta
Параметры
| Имя | Тип |
|---|---|
v | f64 |
Эффекты
не объявлены (чистая, пока тело не говорит иное)
Определено в: std/ser/ser.oxl:840