Курилка программистов, Флуд на около программерские темы |
Здравствуйте, гость ( Авторизация | Регистрация )
Курилка программистов, Флуд на около программерские темы |
25.10.2016, 22:23
Сообщение
#61
|
|
Игровой Бог Репутация: 648 Группа: Участник Сообщений: 5354 Награды: 9 Регистрация: 24.09.2010 |
С ужасом обнаружил, что в JS нету функции формата строки аля С++
В Lua есть: Код str = "world" print(string.format("hello %s", str)) --> hello world Нашел некий аналог для JS: Но тут строка форматируется в несколько ином виде: Код var str = "world"; console.log(format("hello {0}", str)) --> hello world Существует ли первый вариант для JS? -------------------- |
 
|
|
|
|
25.10.2016, 22:46
Сообщение
#62
|
|
Почти Игроман Репутация: 187 Группа: Участник Сообщений: 647 Награды: 4 Регистрация: 05.05.2007 |
RayTwitty, а зачем она там, когда можно "hello " + "world"?
|
 
|
|
25.10.2016, 22:52
Сообщение
#63
|
|
Игровой Бог Репутация: 648 Группа: Участник Сообщений: 5354 Награды: 9 Регистрация: 24.09.2010 |
-------------------- |
 
|
|
26.10.2016, 11:50
Сообщение
#64
|
|
Доктор Игровых Наук Репутация: 1084 Группа: Участник Сообщений: 3950 Награды: 6 Регистрация: 24.08.2010 |
Существует ли первый вариант для JS? В es2015 можно сделать вот так: Код let str = "world"; console.log(`hello ${str}`); // => hello world Обрати внимание на обратные кавычки `, будет работать только с ними. -------------------- |
 
|
|
26.10.2016, 13:47
Сообщение
#65
|
|
TECHNOSLAV 80 уровня Репутация: 379 Группа: Участник Сообщений: 5758 Награды: 6 Регистрация: 26.01.2014 |
Вопрос по C# MVC
Есть база данных с тремя таблицами. Запилена модель WebsiteDBEntities. Суть такова: не получается скинуть List с таблицами в View Код public class HomeController : Controller { WebsiteDBEntities WebsiteDB; List<List<object>> listCeption; public HomeController() { WebsiteDB = new WebsiteDBEntities(); listCeption = new List<List<object>>(); listCeption.Add(new ((object)WebsiteDBEntities().organizations.ToList())); listCeption.Add(new ((object)WebsiteDBEntities().persons.ToList())); listCeption.Add(new ((object)WebsiteDBEntities().connections.ToList())); } public ActionResult Index() { return View(new WebsiteDBEntities().organizations.ToList()); } } КО кричит, что List для object не может принимать organization, person, connection. Кастинг не проходит. Какие есть варианты запихнуть три модели в один List? Сообщение отредактировал Cossack-HD - 26.10.2016, 13:51 -------------------- Ryzen 3700X
Arctic Freezer 33 eSports Duo 16GB DDR4 3600MHz Strix GTX 1080 TI |
 
|
|
26.10.2016, 14:04
Сообщение
#66
|
|
Игровое Воплощение Репутация: 394 Группа: Участник Сообщений: 4791 Награды: 4 Регистрация: 27.04.2011 |
listCeption.Add(new ((object)WebsiteDBEntities().organizations.ToList())); Здесь написана какая-то ересь - после new разве не должен тип указываться? Тогда уж списки как-то так передавать надо: Код var orgView = new List<object>(); foreach(var org in WebsiteDBEntities().organizations) orgView.Add(org); listCeption.Add(orgView); А вообще это какой-то крайне порочный путь. |
 
|
|
26.10.2016, 14:05
Сообщение
#67
|
|
Высший Игровой Бог Репутация: 1747 Группа: Супермодератор Сообщений: 12594 Награды: 15 Регистрация: 05.11.2009 |
Хм. Объединить три модели в одну? У каждой же модели поля разные, как listView поймет какие поля куда пихать?
Ну и еще, список перед добавлением в listView приводится к типу object, но ведь listView не поймет какие поля есть в object. Для этого нужно передавать именно тип/класс конкретного list. --- С C#/MVC работал давно, так что могу ошибаться. Все уже позабыл. -------------------- |
 
|
|
26.10.2016, 16:31
Сообщение
#68
|
|
Доктор Игровых Наук Репутация: 544 Группа: Участник Сообщений: 3657 Награды: 9 Регистрация: 12.07.2007 |
listCeption = new List<List<object>>(); listCeption.Add(new ((object)WebsiteDBEntities().organizations.ToList())); listCeption.Add(new ((object)WebsiteDBEntities().persons.ToList())); listCeption.Add(new ((object)WebsiteDBEntities().connections.ToList())); Я как ява программист и не особо знающий шарпея сильно преполагаю что не проканает такое. Во первых: new List<List<object>>(); Лист в которым Лист в котором объекты??? Косяк. Во вторых: существует ли реализация метода ToList у organizations, persons и connections? Или же там реализация от родителя? В третьих: listCeption.Add(new ((object)WebsiteDBEntities().organizations.ToList())); По логике той же явы конкретно такое написание говорит о том что в listCeption пытаются Add(1 ЭЛЕМАНТ А НЕ ЛИСТ) запихнуть кучу. Хотя в савокупности с первым пунктом и если его правильно реализацивоть то такое возможно. Либо же тут(в шарпе) нет метода AddAll который подразумевает всунуть кучу. В четвертых, опять же незнаю как это в шарпе но в яве для решения подобной задачи и создания таблицы(на самом деле чего угодно) нужно сначала сделать interface или абстрактный класс общий и от него сделать реализации модели(собственно данные из бд в твоем случае) и графического элемента(представление) View. В таком случае если вызывать SomeView.Add(new SomeData()) то табличка\гуи\pojo корректно автоматом разложит все по полочкам. В т.ч. можно реализовать множественный View который отобразит корректно даже разные типы данных или же будет строить дерево таблиц вложенных таблицами с данными(Это исходя из new List<List<object>>()). В пятых: юзать тип Object крайне нежелательно, опять же отталкиваюсь от явы. Касательно ответа на вопрос: Какие есть варианты запихнуть три модели в один List? Не юзай Object!!! Сделай 1 родительский interface(класс если в шарпе нет интерфейсов) и реализуй его в своих organizations, persons и connections. Дальше в листе тип данных будет родительский interface\класс и в него уже пихаешь потомков. |
 
|
|
29.10.2016, 19:37
Сообщение
#69
|
|
Игровой Бог Репутация: 648 Группа: Участник Сообщений: 5354 Награды: 9 Регистрация: 24.09.2010 |
Вопрос следующего характера - имеется самописный парсер конфигов для nodeJS. Для чтения файла используется внутренняя функция readFileSync, которая возвращает массив строк. Строки в файле выглядят как "ключ = значение". Значение может включать в себя специальные символы (вроде '\n' - перенос на следующую строку). После чтения файла функцией readFileSync, почему-то, все эти специальные символы распознаются как обычные, например '\n' как '\' и 'n', соответственно переноса строки не происходит. Кодировка файла конфига UTF-8, кодировка обрабатывающего .js тоже UTF-8.
В итоге был написан костыль, который заменяет в строке два отдельных символа '\' и 'n' на один '\n'. В чем собственно вопрос - почему так происходит и может быть есть нормальный парсер для node JS (гугление по русскому и английскому сегменту инета результата не дали)? -------------------- |
 
|
|
29.10.2016, 20:36
Сообщение
#70
|
|
Доктор Игровых Наук Репутация: 1084 Группа: Участник Сообщений: 3950 Награды: 6 Регистрация: 24.08.2010 |
которая возвращает массив строк Она возвращает буфер или строку. Из документации: Цитата If the encoding option is specified then this function returns a string. Otherwise it returns a buffer. Поэтому просто прочитай и порежь: Код fs.readFileSync('filename', 'utf8').match(/[^\r\n]+/gu)
-------------------- |
 
|
|
29.10.2016, 21:44
Сообщение
#71
|
|
Игровой Бог Репутация: 648 Группа: Участник Сообщений: 5354 Награды: 9 Регистрация: 24.09.2010 |
Она возвращает буфер или строку. Из документации: Да, просто забыл, что сразу в строку перевел и разбил на части через split('\n'). И да, видимо toString делает аналогичное, что и вызов readFileSync с опцией "utf8". Поэтому просто прочитай и порежь: Вроде бы, никаких изменений - \n как не читался, так и не читается. З.Ы. У меня кстати подсветка синтаксиса в sublime с твоим шаблоном сломалась Сообщение отредактировал RayTwitty - 29.10.2016, 21:59 -------------------- |
 
|
|
29.10.2016, 22:02
Сообщение
#72
|
|
Доктор Игровых Наук Репутация: 1084 Группа: Участник Сообщений: 3950 Награды: 6 Регистрация: 24.08.2010 |
RayTwitty, split оставляет пустую строку последним элементом, по-моему.
Вроде бы, никаких изменений - \n как не читался, так и не читается. У меня нормально. Или я не понимаю, что тебе нужно. -------------------- |
 
|
|
29.10.2016, 22:09
Сообщение
#73
|
|
Игровой Бог Репутация: 648 Группа: Участник Сообщений: 5354 Награды: 9 Регистрация: 24.09.2010 |
Или я не понимаю, что тебе нужно. Скачай Должно вывести именно это (массив из двух элементов): вызов console.log(array[0]): Код test1 = One1 Two1 вызов console.log(array[1]): Код test2 = One2
Two2 Сообщение отредактировал RayTwitty - 29.10.2016, 22:39 -------------------- |
 
|
|
29.10.2016, 22:46
Сообщение
#74
|
|
Доктор Игровых Наук Репутация: 1084 Группа: Участник Сообщений: 3950 Награды: 6 Регистрация: 24.08.2010 |
RayTwitty,
Код fs.readFileSync('filename', 'utf8').split(/\\n|\n/gu) З.Ы. У меня кстати подсветка синтаксиса в sublime с твоим шаблоном сломалась Это из-за флага u, он появился только в es6. -------------------- |
 
|
|
29.10.2016, 22:56
Сообщение
#75
|
|
Почти Игроман Репутация: 187 Группа: Участник Сообщений: 647 Награды: 4 Регистрация: 05.05.2007 |
В итоге был написан костыль, который заменяет в строке два отдельных символа '\' и 'n' на один '\n'. Почему костыль? По идее, функция которая читает данные из файла и не должна сама расшифровывать escape-последовательности. Ты же вроде знаешь C++, и даже ассемблер, а такие странные вопросы задаёшь. |
 
|
|
29.10.2016, 23:33
Сообщение
#76
|
|
Игровой Бог Репутация: 648 Группа: Участник Сообщений: 5354 Награды: 9 Регистрация: 24.09.2010 |
По идее, функция которая читает данные из файла и не должна сама расшифровывать escape-последовательности. На самом деле проблема была в другом - на строки readFileSync разбивает таки нормально, а вот спец. символы записанные явно, представляет как экранированные. Это я понял, когда тестил варианты от 1001v. В моем случае, для значения ключа, достаточно просто сделать replace('\\n', '\n'). Проблема решена. Плюсы в репутацию поставил Сообщение отредактировал RayTwitty - 29.10.2016, 23:35 -------------------- |
 
|
|
12.11.2016, 02:29
Сообщение
#77
|
|
Кандидат Игровых Наук Репутация: 2153 Группа: Участник Сообщений: 3488 Награды: 4 Регистрация: 27.07.2009 |
Возник небольшой вопрос по поводу работы Visual Studio и её компилятора, может кто знает ответ. Весь текст копировать не буду, оставлю просто ссылку -
Сами файлы можно посмотреть здесь: Сообщение отредактировал Shoкer - 12.11.2016, 02:29 -------------------- Мне просто нравятся синие буквы под сообщением.
|
 
|
|
12.11.2016, 09:56
Сообщение
#78
|
|
Высший Игровой Бог Репутация: 1747 Группа: Супермодератор Сообщений: 12594 Награды: 15 Регистрация: 05.11.2009 |
Shoкer, а ты проверил тот класс? Может он действительно недоступен для наследования?
PS: полагаю, очистка и полная пересборка проекта (точнее, нужного подпроекта, в решении) уже была сделана? VS (как и многие IDE) часто грешит этой проблемой. PSS: Скорее всего, проблема как раз в новой версии VS / компиляторе. Наверняка в новой версии что-то запретили делать так как было раньше и в итоге возникает предупреждение об ошибке. К сожалению, с C++ работал давно, поэтому ничего конкретного сказать не могу. Кроме как в строке ошибки перейти к определению (комбинацию клавиш в VS тоже забыл ) и посмотреть то место. -------------------- |
 
|
|
12.11.2016, 11:45
Сообщение
#79
|
|
Геймер Репутация: 86 Группа: Участник Сообщений: 128 Награды: 4 Регистрация: 05.05.2012 |
Возник небольшой вопрос по поводу работы Visual Studio и её компилятора, может кто знает ответ. я так понимаю inherited - это какое-то макроопределение препроцессора, полагаю, что этот макрос разворачивается в этой строке: Код inherited::inherited::ProcessCam(info) в что-то типа Код CAnimatorCamEffector::CAnimatorCamEffector::ProcessCam(info)
Сообщение отредактировал refuse - 12.11.2016, 11:46 -------------------- nop
|
 
|
|
12.11.2016, 11:54
Сообщение
#80
|
|
Почти Игроман Репутация: 187 Группа: Участник Сообщений: 647 Награды: 4 Регистрация: 05.05.2007 |
refuse, нет, inherited это родительский класс.
Код class A
{ ... }; class B : public A { typedef A inherited; .... }; |
 
|
|
Текстовая версия | Сейчас: 28.04.2024, 15:14 |