В некоторых случаях это является устаревшим из-за оптимизаций, выполненных компилятором, но общий вопрос то, что код как:
string myString="";
for(int i=0;i<x;i++)
{
myString += "x";
}
будет действовать как ниже (каждый шаг, являющийся следующим повторением цикла):
, Как Вы видите, каждое повторение должно скопировать еще один символ, приводящий к нам работающий 1+2+3+4+5 +... +N операции каждый цикл. Это - O (n^2) операция. Если бы однако мы знали заранее, что нам только были нужны символы N, мы могли сделать это в единственном выделении с копией просто символов N от строк, которые мы использовали - простой O (n) операция.
StringBuffer/StringBuilder избегают этого, потому что они изменяемы, и так не должны продолжать копировать те же данные много раз (пока существует пространство для копирования в в их внутреннем буфере). Они стараются не выполнять выделение и копируют пропорциональный количеству, добавляет сделанный over-allocing, их буфер пропорцией его текущего размера, давая амортизировал O (1) добавление.
Однако, который стоит отметить, что часто компилятор будет в состоянии оптимизировать код в стиль StringBuilder (или лучше - так как это может выполнить сворачивание констант и т.д.), автоматически.
Хорошо, мне пришлось установить флажок «Журнал посещений» на вкладке «Домашний каталог» при просмотре диалогового окна свойств веб-сайта в IIS.
Когда вы используете ключевое слово var
в параметрах, это делает переданное значение новым var
в классе. Когда вы этого не делаете, он делает его параметром конструктора (только), и вы используете его значение для var
, передавая его конструктору. Таким образом, пример, приведенный людьми
class B(val name:String, updateCount:Int) extends A(updateCount)
, верен.
Однако scala делает параметры конструктора напрямую доступными для методов в классе (я не уверен, почему), поэтому, если вы используете то же имя, вы обнаружите, что ваш код не может быть скомпилирован с ошибкой переназначение на val
при попытке переназначить "var". Например, в следующем фрагменте неизменяемый параметр конструктора затеняет унаследованный var
, поэтому вы не можете назначить его параметру.
Как насчет поиска всего, что заканчивается на .log? Или в нем есть w3svc?