2 - этот быстрый интерфейсный подход является просто заменой для не существующих именованных параметров метода в C#? Был бы названные параметры делать быстрые интерфейсы устаревшими, например, что-то подобные объективные-C предложения:
Хорошо да и нет. Быстрый интерфейс дает Вам большее количество гибкости. Что-то, что не могло быть достигнуто с именованными параметрическими усилителями:
sizer.FromImage(i)
.ReduceByPercent(x)
.Pixalize()
.ReduceByPercent(x)
.OutputImageFormat(ImageFormat.Jpeg)
.ToLocation(o)
.Save();
FromImage, ToLocation и OutputImageFormat в жидком интерфейсе, пахнут немного мне. Вместо этого я сделал бы что-то вдоль этих строк, которые я думаю, намного более ясно.
new Sizer("bob.jpeg")
.ReduceByPercent(x)
.Pixalize()
.ReduceByPercent(x)
.Save("file.jpeg",ImageFormat.Jpeg);
Быстрые интерфейсы имеют те же проблемы много методов программирования, они могут неправильно использоваться, злоупотребили или недогруженный. Я думаю, что, когда эта техника используется эффективно, она может создать более богатую и более краткую модель программирования. Даже StringBuilder поддерживает его.
var sb = new StringBuilder();
sb.AppendLine("Hello")
.AppendLine("World");
GDB не является компилятором Objective-C. Компилятор знает о таких вещах, как лексическая область видимости в методах Objective-C, а GDB - нет. Однако он понимает локальные переменные.
В Objective-C каждый метод имеет неявный параметр self
, передаваемый ему при вызове. Итак, когда вы смотрите на self-> str
, GDB интерпретирует это так же, как и любую другую оценку локальной переменной.
Когда вы пытаетесь вычислить str
самостоятельно, GDB будет искать локальную переменную с именем str
и, не найдя ее, сообщает, что она не входит в область действия. Это не ошибка; это ожидаемое поведение.