powershell - 在模块内定义私有函数的约定和原生支持
问题描述
powershell 模块使得拥有私有“方法”成为可能,但我找不到任何约定或支持这样定义它们。对于较大的脚本,这不仅仅是表面上的代码美化,能够通过名称判断方法是否是本地的变得非常重要。
这种工作,但每次我导入它没有使用正确命名的动词时,powershell都会抱怨。是否有支持定义本地函数/方法的前缀?
function _Get-Something {...}
function Get-SomethingElse { _Get-Something -arg sdfsdf .....}
Export-ModuleMember -Function Get-SomethingElse
解决方案
使用您的示例,我没有收到警告消息(PowerShell 5.1),因为您没有导出 function _Get-Something
。
如果我确实将其导出(Export-ModuleMember -Function Get-SomethingElse, _Get-Something
),则会发生警告。
我不知道这有什么约定,但我通常做的是在模块中命名这样一个辅助函数,不带破折号(_Get-Something
--> _GetSomething
),并为我想要导出的函数使用带有批准动词的正确名称。然后导出懒惰的方式:
Export-ModuleMember -Function *-*
也可以在使用它的导出函数中“隐藏”辅助函数,例如
function Get-SomethingElse {
# helper function inside
function _Get-Something { Write-Host "Hi from $($MyInvocation.MyCommand)" }
_Get-Something -arg 'sdfsdf .....'
}
Export-ModuleMember -Function Get-SomethingElse
这也没有在我的机器上显示警告。
-DisableNameChecking
最后,您可以通过将开关添加到命令来消除警告:
Import-Module 'D:\test.psm1' -DisableNameChecking
希望这可以帮助
推荐阅读
- django - 如何创建具有特定区域的 Heroku 应用程序
- c++ - Int 到 ASCII 字符和 char 到 ASCII 数字 | C++
- python - 是否可以在 Tesseract 中提供时间模式?
- xcode - 我的颤振项目没有在 iOS 模拟器中打开
- python - 在特定时间段内过期的 Django 应用程序
- java - 在数组中,检查字符串是否相同,如果相同,则向上计数
- c# - 保存和加载 DataGridView 数据的最佳方式
- python - Python中的条件格式化字符串
- python - 如何使用 tkinter python 的入口值
- javascript - Crockford 书中的 Javascript 中的记忆