Форматирование строк
От: Don Reba Канада https://stackoverflow.com/users/49329/don-reba
Дата: 16.04.12 09:55
Оценка:
Помню, здесь давно было обсуждение совмещения интерполированных строк со String.Format. Из этого что нибудь вышло? Хотелось бы иметь возможность писать:
WriteLine($"pi = $(Math.PI,5:F2)");
Ce n'est que pour vous dire ce que je vous dis.
Re: Форматирование строк
От: VladD2 Российская Империя www.nemerle.org
Дата: 17.04.12 01:37
Оценка:
Здравствуйте, Don Reba, Вы писали:

DR>Помню, здесь давно было обсуждение совмещения интерполированных строк со String.Format. Из этого что нибудь вышло? Хотелось бы иметь возможность писать:

DR>
WriteLine($"pi = $(Math.PI,5:F2)");


Это никто не реализовал. Когда мне изредка была нужна подобная функциональность, я просто определял нужную функцию и использовал ее в сплайсе.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[2]: Форматирование строк
От: _d_m_  
Дата: 17.04.12 03:22
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Здравствуйте, Don Reba, Вы писали:


DR>>Помню, здесь давно было обсуждение совмещения интерполированных строк со String.Format. Из этого что нибудь вышло? Хотелось бы иметь возможность писать:

DR>>
WriteLine($"pi = $(Math.PI,5:F2)");


VD>Это никто не реализовал. Когда мне изредка была нужна подобная функциональность, я просто определял нужную функцию и использовал ее в сплайсе.


WriteLine($"pi = $(Math.PI.ToString(\"F2\"))");
... << RSDN@Home 1.2.0 alpha 5 rev. 1539>>
Re[3]: Форматирование строк
От: VladD2 Российская Империя www.nemerle.org
Дата: 17.04.12 19:06
Оценка:
Здравствуйте, _d_m_, Вы писали:

___>
WriteLine($"pi = $(Math.PI.ToString(\"F2\"))");


Лучше так:
def fmt(x) { x.ToString("F2") }

WriteLine($"pi = $(fmt(Math.PI))");
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[4]: Форматирование строк
От: _d_m_  
Дата: 18.04.12 06:12
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Здравствуйте, _d_m_, Вы писали:


___>>
WriteLine($"pi = $(Math.PI.ToString(\"F2\"))");


VD>Лучше так:

VD>
VD>def fmt(x) { x.ToString("F2") }

VD>WriteLine($"pi = $(fmt(Math.PI))");
VD>


А чем лучше? Для каждой форматной строки по нескольку локальных ф-ций?
А если так:
string.Format("{0:YYYY-MM-DD} asd qaz {1:F2} dsa zaq 0x{2:X}\n", DateTime.Now, 1.2344, 3456);


Ну лучше конечно, ни так и ни так. А как в исходном варианте.
... << RSDN@Home 1.2.0 alpha 5 rev. 1539>>
Re[5]: Форматирование строк
От: VladD2 Российская Империя www.nemerle.org
Дата: 18.04.12 11:13
Оценка:
Здравствуйте, _d_m_, Вы писали:

___>А чем лучше? Для каждой форматной строки по нескольку локальных ф-ций?


На практике их не бывает много. Обычно форматы — это повторно-используемый ресурс. К тому же не обязательно использовать локальную функцию можно и статический метод.

Ну, а вместо вызова можно использовать |>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[6]: Форматирование строк
От: _d_m_  
Дата: 18.04.12 11:36
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Здравствуйте, _d_m_, Вы писали:


___>>А чем лучше? Для каждой форматной строки по нескольку локальных ф-ций?


VD>На практике их не бывает много. Обычно форматы — это повторно-используемый ресурс. К тому же не обязательно использовать локальную функцию можно и статический метод.


Можно. Но только удобочитаемость теряется.

VD>Ну, а вместо вызова можно использовать |>


Я пока в Н не спец. Можно пример?
... << RSDN@Home 1.2.0 alpha 5 rev. 1539>>
Re[6]: Форматирование строк
От: Don Reba Канада https://stackoverflow.com/users/49329/don-reba
Дата: 18.04.12 11:41
Оценка: +1
Здравствуйте, VladD2, Вы писали:

VD>На практике их не бывает много. Обычно форматы — это повторно-используемый ресурс. К тому же не обязательно использовать локальную функцию можно и статический метод.


Практика бывает разной. В моей много вычислительных экспериментов и вывода промежуточных результатов. Нахожу, что чаще удобнее пользоваться String.Format чем интерполированными строками.
Ce n'est que pour vous dire ce que je vous dis.
Re[7]: Форматирование строк
От: VladD2 Российская Империя www.nemerle.org
Дата: 18.04.12 11:45
Оценка:
Здравствуйте, Don Reba, Вы писали:

DR>Практика бывает разной. В моей много вычислительных экспериментов и вывода промежуточных результатов. Нахожу, что чаще удобнее пользоваться String.Format чем интерполированными строками.


Ну, расширь функциональность последних, раз уж тебе оно надо. Никто против не будет. Просто есть много других задач которые не решены.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[4]: Форматирование строк
От: Don Reba Канада https://stackoverflow.com/users/49329/don-reba
Дата: 18.04.12 11:49
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Лучше так:

VD>
VD>def fmt(x) { x.ToString("F2") }

VD>WriteLine($"pi = $(fmt(Math.PI))");
VD>


Это как-то совсем громоздко. Был бы смысл использовать интерполированные строки, если бы выбор стоял между такими вариантами:
WriteLine("pi = {0,5:F2}", Math.PI); // C# style
WriteLine($"pi = $(Math.PI,5:F2)");  // fictional Nemerle style
Ce n'est que pour vous dire ce que je vous dis.
Re[8]: Форматирование строк
От: Don Reba Канада https://stackoverflow.com/users/49329/don-reba
Дата: 18.04.12 11:50
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Ну, расширь функциональность последних, раз уж тебе оно надо. Никто против не будет. Просто есть много других задач которые не решены.


Справедливо. Возможно, в Мае будет время.
Ce n'est que pour vous dire ce que je vous dis.
Re[7]: Форматирование строк
От: VladD2 Российская Империя www.nemerle.org
Дата: 18.04.12 11:52
Оценка:
Здравствуйте, _d_m_, Вы писали:

___>Можно. Но только удобочитаемость теряется.


Не спорю. Вопрос в объемах форматирования. Если их можно то стринг.Формат будет предпочтительнее.

___>Я пока в Н не спец. Можно пример?


def F2(x : double) : string { x.ToString("F2") }

WriteLine($"pi = $(Math.PI |> F2)");
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[5]: Форматирование строк
От: VladD2 Российская Империя www.nemerle.org
Дата: 18.04.12 11:55
Оценка:
Здравствуйте, Don Reba, Вы писали:

DR>Это как-то совсем громоздко. Был бы смысл использовать интерполированные строки, если бы выбор стоял между такими вариантами:

DR>
WriteLine("pi = {0,5:F2}", Math.PI); // C# style
DR>WriteLine($"pi = $(Math.PI,5:F2)");  // fictional Nemerle style


Можно так:
def F2(x : double) : string { x.ToString("F2") }

WriteLine($"pi = $(Math.PI |> F2)");


Хотя в целом, согласен — поддержка форматирования сплайсами была бы очень кстати.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.