Có cách nào để xóa các giá trị trả lại bên trong một hàm để tôi có thể đảm bảo rằng giá trị trả lại là những gì tôi định? Hoặc có thể tắt hành vi này cho chức năng?Xóa giá trị đầu ra/trả lại bị xóa trong hàm Powershell
Trong ví dụ này, tôi hy vọng các giá trị trả về là một ArrayList chứa ("Hello", "Thế giới")
function GetArray()
{
# $AutoOutputCapture = "Off" ?
$myArray = New-Object System.Collections.ArrayList
$myArray.Add("Hello")
$myArray.Add("World")
# Clear return value before returning exactly what I want?
return $myArray
}
$x = GetArray
$x
Tuy nhiên, sản lượng có chứa các giá trị thu được từ các hoạt động Add.
0
1
Hello
World
Tôi thấy tính năng "này" của Powershell rất khó chịu vì nó thực sự dễ dàng phá vỡ chức năng của bạn bằng cách gọi một hàm khác mà bạn không biết trả về giá trị.
Cập nhật
Tôi hiểu có nhiều cách để ngăn chặn đầu ra không bị bắt (như mô tả trong một trong các câu trả lời dưới đây), nhưng điều đó đòi hỏi bạn phải biết rằng một chức năng thực sự trả về một giá trị. Nếu bạn đang gọi một hàm Powershell khác, có thể, trong tương lai, ai đó thay đổi hàm này để trả về một giá trị, sau đó sẽ phá vỡ mã của bạn.
Bạn đã xử lý vấn đề này như thế nào. Đây là tính năng rất khó chịu của PowerShell không cho phép kiểm soát giá trị trả lại. – Feru
Tôi vừa kết thúc bằng cách sử dụng [void] ở khắp mọi nơi. Tôi cũng quyết định làm những việc phức tạp hơn trong C#, sau đó sử dụng PowerShell để dán chúng lại với nhau. – Mas