Как можно использовать свойство объекта в дважды заключенной в кавычки строке?

Используя http://phrogz.net/JS/ArraySetMath.js , вы можете:

var array1 = ["test1", "test2","test3", "test4"];
var array2 = ["test1", "test2","test3","test4", "test5", "test6"];

var array3 = array2.subtract( array1 );
// ["test5", "test6"]

var array4 = array1.exclusion( array2 );
// ["test5", "test6"]

83
задан mklement0 6 November 2016 в 02:40
поделиться

2 ответа

Когда вы заключаете имя переменной в строку с двойными кавычками, оно будет заменено значением этой переменной:

$foo = 2
"$foo"

становится

"2"

Если вы не хотите, чтобы вы использовали одиночные кавычки:

$foo = 2
'$foo'

Однако, если вы хотите получить доступ к свойствам или использовать индексы для переменных в строке с двойными кавычками, вы должны заключить это подвыражение в $ () :

$foo = 1,2,3
"$foo[1]"     # yields "1 2 3[1]"
"$($foo[1])"  # yields "2"

$bar = "abc"
"$bar.Length"    # yields "abc.Length"
"$($bar.Length)" # yields "3"

PowerShell расширяет только переменные в тех случаях не более того. Чтобы принудительно вычислить более сложные выражения, включая индексы, свойства или даже полные вычисления, вы должны заключить их в оператор подвыражения $ () , который заставляет внутреннее выражение вычисляться и вставляться в строку.

142
ответ дан 24 November 2019 в 08:50
поделиться

@Joey имеет правильный ответ, но просто чтобы добавить еще немного, почему вам нужно принудительно выполнять оценку с помощью $ () :

Ваш пример кода содержит двусмысленность, которая указывает на то, почему создатели PowerShell, возможно, решили ограничить расширение простыми ссылками на переменные и не поддерживать также доступ к свойствам (в стороне: расширение строки выполняется путем вызова ToString () на объекте, который может объяснить некоторые "странные" результаты).

Ваш пример содержится в самом конце командной строки:

...\$LogFileName.ldf

Если бы свойства объектов были расширены по умолчанию, приведенное выше преобразовалось бы в

...\

, поскольку объект, на который ссылается $ LogFileName , не будет иметь свойство под названием ldf ,

14
ответ дан 24 November 2019 в 08:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: