JavaScript: получите значение аргумента и НАЗВАНИЕ переданной переменной [дубликат]

ThisWorkbook.Worksheets("Master").Sheet1.Cells.Copy _
    Destination:=newWorksheet.Cells

Выше будут скопированы ячейки. Если вы действительно хотите продублировать весь лист, я бы пошел с ответом @ brettdj .

46
задан Eric Leschinski 6 February 2019 в 21:19
поделиться

5 ответов

Короткий ответ: вы не можете.

Более длинный и злой ответ заключается в том, что вы вроде как можете с какой-то настоящей мерзостью. И он работает только при вызове из другой функции.

вам доступны два интересных атрибута, которые могут помочь

arguments.callee вызывающий

для fn должен сделать что-то вроде этого:

(function(){
  var showMe = function(s){
    alert(arguments.callee.caller.toString().match(/showMe\((\S)\)/)[1] + 
    ' = '+ s)
  }
  x = 1
  showMe(x)
})()

То, что arguments.callee.caller.toString (). match (..) [1], - это поиск showMe, вызываемого в вызывающей его функции, и вывод его и его значение.

Но это все еще довольно ограничено, потому что оно попадет только в первый вызов showMe (x). Так что, если есть два вызова, это не сработает.

Но было весело играть с этими загадочными штуками.

59
ответ дан 26 November 2019 в 20:29
поделиться
var x = "anything";

function showName(s) {
    alert(s + " = " + eval(s));
}

showName("x");

Не рекомендуется, но вот оно.

8
ответ дан 26 November 2019 в 20:29
поделиться

Вы можете создать хэш и передать его в:

var x = {a: 1,b:2}
function showVars(y) {
    for (var z in y) { alert(z + " is " + y[z]); }
}
showVars(x);

Это не обязательно показывает имя переменной, но позволяет использовать пары ключ-значение, которые могут быть больше суть в том, что вам нужно.

2
ответ дан 26 November 2019 в 20:29
поделиться

Не уверен, что вы можете напрямую получить то, что хотите, от JavaScript, поскольку имя переменной не передается вместе со значением, на которое оно ссылается (думайте об именах переменных как об идентификаторах только компилятор знает о; но которые выбрасываются во время выполнения).

Вы можете , однако, сделать что-то другое , что позволяет передавать именованные аргументы. Создайте анонимный объект и передайте его своей функции:

function showNames(o)
{
    for( var ix in o )
    {
       alert( ix + ":" + o[ix] );
    }
}

var z = { x : "Anything" }
showNames( z );
// or
showNames( { a : "ay", b : "bee", c: "see" } )

Для итерации свойств объекта я предпочитаю функциональный стиль, например:

Array.iteri = function(o, f)
{
    for(var i in o) { f(i, o[i]) }
}

function showNames(o)
{
    Array.iteri( o, function(i,v)
    {
        alert( i + ": " + v )
    });
}
showNames( { a : "ay", b : "bee", c: "see" } )
1
ответ дан 26 November 2019 в 20:29
поделиться

Несколько методов, включая упомянутые вами:

  • Уровень детализации. Изложено выше.
  • Mipmapping. Для текстур.
  • Поле зрения. Ограничьте количество объектов, которые ваша камера может «видеть», выбрав соответствующий уровень масштабирования. См. Также отсечение усеченного вида
  • Дальняя плоскость отсечения. Окклюзия далеких мест: в большинстве игр используется туман, горы или какие-то другие предлоги, чтобы строго отсечь, насколько далеко вы можете видеть. Это может быть реализовано с использованием октодерева или другой подобной техники. Это может быть основано на целых объектах, многоугольниках или на чем угодно, и обычно происходит прямо за этими вышеупомянутыми горами.
  • Арены / уровни / области / что угодно - опять же, большинство игр искусственно ограничивают вас играть на одной арене за раз; выгода очевидна (вы можете игнорировать объекты на всех других аренах)
  • Предварительный рендеринг - это то, что вы предлагаете выше. Для удаленных статических сцен визуализируйте сцену в «типичном» виде и сделайте из нее текстуру фона или используйте ее для скайбокса / карты отражений и т. Д.

Идея состоит в том, чтобы выбросить как можно больше деталей это возможно до того, как пользователи начнут это замечать.

Существует ряд уже существующих наборов инструментов, которые будут делать эти вещи автоматически, но они, как правило, стоят денег. Если вы ищете серьезное приложение, я бы порекомендовал хотя бы изучить решения, которые оно включает.

  • Арены / уровни / области / что угодно - опять же, большинство игр искусственно ограничивают вас возможностью играть на одной арене за раз; выгода очевидна (вы можете игнорировать объекты на всех других аренах)
  • Предварительный рендеринг - это то, что вы предлагаете выше. Для удаленных статических сцен визуализируйте сцену в «типичном» виде и сделайте из нее текстуру фона или используйте ее для скайбокса / карты отражений и т. Д.
  • Идея состоит в том, чтобы выбросить как можно больше деталей это возможно до того, как пользователи начнут это замечать.

    Существует ряд уже существующих наборов инструментов, которые будут делать эти вещи автоматически, но они, как правило, стоят денег. Если вы ищете серьезное приложение, я бы порекомендовал хотя бы изучить решения, которые оно включает.

  • Арены / уровни / области / что угодно - опять же, большинство игр искусственно ограничивают вас возможностью играть на одной арене за раз; выгода очевидна (вы можете игнорировать объекты на всех других аренах)
  • Предварительный рендеринг - это то, что вы предлагаете выше. Для удаленных статических сцен визуализируйте сцену в «типичном» виде и сделайте из нее текстуру фона или используйте ее для скайбокса / карты отражений и т. Д.
  • Идея состоит в том, чтобы выбросить как можно больше деталей это возможно до того, как пользователи начнут это замечать.

    Существует ряд уже существующих наборов инструментов, которые будут делать эти вещи автоматически, но они, как правило, стоят денег. Если вы ищете серьезное приложение, я бы порекомендовал хотя бы изучить решения, которые оно включает.

    выгода очевидна (вы можете игнорировать объекты на всех других аренах)
  • Предварительный рендеринг - это то, что вы предлагаете выше. Для удаленных статических сцен визуализируйте сцену в «типичном» виде и сделайте из нее текстуру фона или используйте ее для скайбокса / карты отражений и т. Д.
  • Идея состоит в том, чтобы выбросить как можно больше деталей это возможно до того, как пользователи начнут это замечать.

    Существует ряд уже существующих наборов инструментов, которые будут делать эти вещи автоматически, но они, как правило, стоят денег. Если вы ищете серьезное приложение, я бы порекомендовал хотя бы изучить решения, которые оно включает.

    выгода очевидна (вы можете игнорировать объекты на всех других аренах)
  • Предварительный рендеринг - это то, что вы предлагаете выше. Для удаленных статических сцен визуализируйте сцену в «типичном» виде и сделайте из нее текстуру фона или используйте ее для скайбокса / карты отражений и т. Д.
  • Идея состоит в том, чтобы выбросить как можно больше деталей это возможно до того, как пользователи начнут это замечать.

    Существует ряд уже существующих наборов инструментов, которые будут делать эти вещи автоматически, но они, как правило, стоят денег. Если вы ищете серьезное приложение, я бы порекомендовал хотя бы изучить решения, которые оно включает.

    или использовать его для скайбокса / карты отражений и т. д.

    Идея состоит в том, чтобы отбросить как можно больше деталей, прежде чем пользователи начнут это замечать.

    Существует ряд уже существующих наборов инструментов, которые будут делать эти вещи автоматически, но они, как правило, стоят денег. Если вы ищете серьезное приложение, я бы порекомендовал хотя бы изучить решения, которые оно включает.

    или использовать его для скайбокса / карты отражений и т. д.

    Идея состоит в том, чтобы отбросить как можно больше деталей, прежде чем пользователи начнут это замечать.

    Существует ряд уже существующих наборов инструментов, которые будут делать эти вещи автоматически, но они, как правило, стоят денег. Если вы ищете серьезное приложение, я бы порекомендовал хотя бы изучить решения, которые оно включает.

    потому что, если враждебно настроенный пользователь может перезаписать значение foo в памяти в любой момент, он может выполнить инъекцию команд ОС и запустить любую команду, которую захотят.
    http: //cwe.mitre. org / top25 / # Guidance

    6
    ответ дан 26 November 2019 в 20:29
    поделиться
    Другие вопросы по тегам:

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