Все внутри {{ ... }}
- это похожее на Python выражение. Вам не нужно использовать другой {{ ... }}
внутри, чтобы ссылаться на переменные.
Отбросить дополнительные скобки:
<h1>you uploaded {{ name }}<h1>
<a href="{{ url_for('moremagic', filename=name) }}">Click to see magic happen</a>
(Обратите внимание, что функция url_for()
принимает конечную точку name , а не URL-путь, по умолчанию имя имени функции moremagic
в вашем примере).
Использовать Array.join
var s = "";
n.each(function() {
s += $(this).val() + ",";
});
становится:
var a = [];
n.each(function() {
a.push($(this).val());
});
var s = a.join(', ');
Можно использовать метод String.prototype.slice
с отрицательным аргументом endSlice
:
n = n.slice(0, -1); // last char removed, "abc".slice(0, -1) == "ab"
Или можно использовать метод $.map
для построения строки, разделенной запятыми:
var s = n.map(function(){
return $(this).val();
}).get().join();
alert(s);
См. R-FAQ :
Два проекта используют PHP для предоставления веб-интерфейса R. R _ PHP _ Online Стива Чена (хотя неясно, активен ли этот проект) в некоторой степени сходен с вышеупомянутыми Rcgi и Rweb. R-php активно разрабатывается Альфредо Понтильо и Анджело Минео и обеспечивает как веб-интерфейс для R, так и набор предварительно определенных анализов, которые не требуют ввода R-кода.
и эта статья: Использование R через PHP в учебных целях: R-php
-121--2789799- Вы можете удалить «недопустимый» WeakReference
внутри TryGetValue
:
[Правка] Эта ошибка заключается в том, что эти решения фактически делают только то, что вы предлагаете, поскольку метод Put
в любом случае заменяет старый объект новым. Просто проигнорируйте это.
public bool TryGetValue(TKey key, out TValue value) {
WeakReference weakRef;
if (!this.items.TryGetValue(key, out weakRef)) {
value = null;
return false;
} else {
value = (TValue)weakRef.Target;
if (value == null)
this.items.Remove(key);
return (value != null);
}
}
Или вы можете немедленно создать новый экземпляр в словаре, когда это необходимо:
public TValue GetOrCreate(TKey key, Func<Tkey, TValue> ctor) {
WeakReference weakRef;
if (!this.items.TryGetValue(key, out weakRef) {
Tvalue result = ctor(key);
this.Put(key, result);
return result;
}
value = (TValue)weakRef.Target;
if (value == null)
{
Tvalue result = ctor(key);
this.Put(key, result);
return result;
}
return value;
}
Вы будете использовать его следующим образом:
static Foo CreateFoo(int id)
{
return cache.GetOrCreate(id, id => new Foo(id));
}
[Edit]
В соответствии с windbg, один экземпляр WeakReference
занимает 16 байт. Для 100 000 собранных объектов это не было бы таким серьезным бременем, поэтому можно было бы легко дать им жить.
Если это серверное приложение, и вы считаете, что вы могли бы выиграть от сбора, я бы подумал о том, чтобы перейти к фоновому потоку, а также реализовать простой алгоритм, чтобы увеличить время ожидания всякий раз, когда вы собираете относительно небольшое количество объектов.
-121--2341756- Ответ Сэма является лучшим на данный момент, но я думаю, что карта была бы лучшим выбором, чем каждая в этом случае. Вы преобразуете список элементов в список их значений, и именно для этого и разработана карта
.
var list = $("td.title_listing input:checked")
.map(function() { return $(this).val(); })
.get().join(', ');
Edit: Whoops, я пропустил, что CMS избил меня до использования карты
, он просто спрятал его под slice
предложение, которое я пропустил.
Использование «нормального» JavaScript:
var truncated = s.substring(0, s.length - 1);
Более примитивный способ - это изменить Каждый
петля в для петли
for(var x = 0; x < n.length; x++ ) {
if(x < n.length - 1)
s += $(n[x]).val() + ",";
else
s += $(n[x]).val();
}
Вместо того, чтобы удалить его, вы можете просто пропустить добавление его в первую очередь:
var s = '';
n.each(function() {
s += (s.length > 0 ? ',' : '') + $(this).val();
});