function - 使用 powershell 函数的返回值
问题描述
> function h2n($num) {return [int]$num.replace(",", "")}
> h2n("1,341,096") | get-member
TypeName: System.Int32
Name MemberType Definition
---- ---------- ----------
CompareTo Method int CompareTo(System.Object value), int CompareTo(int value), int IComparable.CompareTo(System.Object obj), int IComparable[int].Com... Equals Method bool Equals(System.Object obj), bool Equals(int obj), bool IEquatable[int].Equals(int other)
GetHashCode Method int GetHashCode()
GetType Method type GetType()
GetTypeCode Method System.TypeCode GetTypeCode(), System.TypeCode IConvertible.GetTypeCode()
ToBoolean Method bool IConvertible.ToBoolean(System.IFormatProvider provider)
ToByte Method byte IConvertible.ToByte(System.IFormatProvider provider)
ToChar Method char IConvertible.ToChar(System.IFormatProvider provider)
ToDateTime Method datetime IConvertible.ToDateTime(System.IFormatProvider provider)
ToDecimal Method decimal IConvertible.ToDecimal(System.IFormatProvider provider)
ToDouble Method double IConvertible.ToDouble(System.IFormatProvider provider)
ToInt16 Method int16 IConvertible.ToInt16(System.IFormatProvider provider)
ToInt32 Method int IConvertible.ToInt32(System.IFormatProvider provider)
ToInt64 Method long IConvertible.ToInt64(System.IFormatProvider provider)
ToSByte Method sbyte IConvertible.ToSByte(System.IFormatProvider provider)
ToSingle Method float IConvertible.ToSingle(System.IFormatProvider provider)
ToString Method string ToString(), string ToString(string format), string ToString(System.IFormatProvider provider), string ToString(string format, ... ToType Method System.Object IConvertible.ToType(type conversionType, System.IFormatProvider provider)
ToUInt16 Method uint16 IConvertible.ToUInt16(System.IFormatProvider provider)
ToUInt32 Method uint32 IConvertible.ToUInt32(System.IFormatProvider provider)
ToUInt64 Method uint64 IConvertible.ToUInt64(System.IFormatProvider provider)
> h2n("1,341,096") * 0
1341096
为什么最后一个表达式不返回 0?
解决方案
您可以
[int](h2n('1,341,096')) * 0
在调用函数时输入。
正如上面的评论者建议的那样,您应该输入 (h2n '1,341,096') * 0。
这样做的原因是因为在 Powershell 中,在 shell 上调用函数时,您不会在括号中输入函数参数。取而代之的是,您使用终端样式的语法,并用空格和不带括号的方式分隔参数。
那么当你进入时会发生什么h2n('1,341,096') * 0
?它执行此函数调用:
(h2n '1,341,096' * 0)
那只是向你的函数传递了 3 个参数,第一个是 1,341,096,第二个是 *,第三个是 0。这绝对不是你想要的。
这将与h2n('1,341,096', *, 0);
使用普通编程语言进行功能等效。
相反,你用一个空格来调用你的函数,h2n '1,341,096'
然后用括号括起来,这样你就可以在内联表达式中使用它。
推荐阅读
- c++ - 如何向 C++ 日志宏添加额外参数
- xamarin - com.apple.AuthenticationServices.Authorization 错误代码 1000
- rest - Postman/OpenApi 3.0.0:使用远程引用导入文件失败
- react-admin - 如何在 React-admin 的列表组件上呈现动态字段
- python-3.x - 在python3中操作类型字节
- javascript - 选中时在每个复选框中触发更改事件
- c# - Log4net - 无法写入
- php - Guzzle:将常规请求转换为异步请求
- python - 为什么我只能腌制 2 个文件但只能解开一个?
- visual-studio-code - 有没有办法保存一些常用的文本并在 VSCode 中粘贴代码?