package reflux import ( "reflect" "git.fsdpf.net/go/reflux/valuex" ) // nilR 是 R 接口的空实现,所有操作均为空操作或返回零值 type nilR struct{} // Nil 是全局唯一的 nilR 实例,表示不存在或空的 R 值 var Nil R = &nilR{} func (n *nilR) Get(path ...string) R { return n } func (n *nilR) Scope(p ...string) R { return n } func (n *nilR) Set(key string, v any) R { return n } func (n *nilR) Append(items ...any) R { return n } func (n *nilR) Delete(p ...string) R { return n } func (n *nilR) Exists(p ...string) bool { return false } func (n *nilR) Array() []R { return nil } func (n *nilR) Keys() []string { return nil } func (n *nilR) MarshalJSON() ([]byte, error) { return []byte("null"), nil } func (n *nilR) UnmarshalJSON([]byte) error { return nil } func (n *nilR) Lookup(path string) (valuex.Accessor, bool) { return valuex.Nil, false } func (n *nilR) MustLookup(path string) valuex.Accessor { return valuex.Nil } func (n *nilR) Raw() reflect.Value { return reflect.Value{} } func (n *nilR) Ptr() any { return nil } func (n *nilR) Any() any { return nil } func (n *nilR) Bool() bool { return false } func (n *nilR) Float64() float64 { return 0 } func (n *nilR) Float32() float32 { return 0 } func (n *nilR) Int64() int64 { return 0 } func (n *nilR) Int32() int32 { return 0 } func (n *nilR) Int16() int16 { return 0 } func (n *nilR) Int8() int8 { return 0 } func (n *nilR) Int() int { return 0 } func (n *nilR) Uint() uint { return 0 } func (n *nilR) Uint64() uint64 { return 0 } func (n *nilR) Uint32() uint32 { return 0 } func (n *nilR) Uint16() uint16 { return 0 } func (n *nilR) Uint8() uint8 { return 0 } func (n *nilR) String() string { return "" } func (n *nilR) StringMapString() map[string]string { return nil } func (n *nilR) StringMapStringSlice() map[string][]string { return nil } func (n *nilR) StringMapBool() map[string]bool { return nil } func (n *nilR) StringMapInt() map[string]int { return nil } func (n *nilR) StringMapInt64() map[string]int64 { return nil } func (n *nilR) StringMap() map[string]any { return nil } func (n *nilR) Slice() []any { return nil } func (n *nilR) BoolSlice() []bool { return nil } func (n *nilR) StringSlice() []string { return nil } func (n *nilR) IntSlice() []int { return nil }