1

голосов
2

ответ
77

Просмотры

Почему не работает называть именующее выражение

Это должно быть довольно очевидно, но я не мог любой нормативно-справочный в стандарте явно, что вызов функции (не) именующий. Существует несколько связанного вопрос, но речь идет о C ++ и никаких ссылок не предусмотрена. Просматривая 6.5.2.2 (p5) Функция вызывает только я мог бы найти, если выражение, которое обозначает вызываемой функции имеет тип указатель на функцию, возвращающую тип объекта, выражение вызова функции имеет тот же тип, что и тип объекта, и имеет значение определяется, как указано в 6.8.6.4 6.3.2.1 (p1) утверждает, что именующее выражение является выражением (с типом объекта другой thanvoid), что potentiallydesignates объект так что я пытался найти, если вызов функции обозначает объект. Не указано в стандарте, если результат вызова функции имеет срок хранения и срок службы. Так как любой объект имеет срок хранения и срок службу я пришел к выводу, что любое выражение вызова функции не обозначает объект, следовательно, не в именующем выражение. Но это кажется запутанным и сложным. В частности, я нашел пример 6.5.2.3 (Р7): Пример 1 Если F представляет собой функцию, возвращающую структуру или объединение, и х является членом этой структуры или объединения, F () х является допустимым выражением постфикса, но это не так. именующий. Судя по этому примеру, если F () будет именующим п (). Х будет также именующей. Но примеры являются информативными, которые заставили меня запутался. F (). х является допустимым выражением постфикса, но не именующий. Судя по этому примеру, если F () будет именующим п (). Х будет также именующей. Но примеры являются информативными, которые заставили меня запутался. F (). х является допустимым выражением постфикса, но не именующий. Судя по этому примеру, если F () будет именующим п (). Х будет также именующей. Но примеры являются информативными, которые заставили меня запутался.
Some Name
1

голосов
2

ответ
45

Просмотры

Memory order consume usage in C11

Я прочитал про несет отношение зависимости и зависимость упорядоченной перед тем, что использует один в своем определении 5.1.2.4 (p16): Оценка А зависимость упорядоченной перед оценкой B, если: - это выполняет операцию выхода на атомном объекте М и, в другом потоке, Б выполняет потребить операцию на М, и считывает значение, записанное с помощью какого-либо побочного эффекта в последовательности высвобождения во главе с а, или - для некоторой оценки X, а зависимость-заказано до Й и Х несет зависимость в Б. Так что я пытался выработать пример, где это может быть полезно. Вот он: статический _Atomic INT I; недействительный * продукт (недействительный * PTR) {INT int_value = * ((INT *) PTR); atomic_store_explicit (& я, int_value, memory_order_release); возвращать NULL; } Недействительными * потреблять (недействительными * игнорируется) {INT int_value = atomic_load_explicit (& я, memory_order_consume); INT new_int_value = int_value + 42; Е ( "Потребляемая =% d \ п", new_int_value); } INT основных (INT арг, Const символ * ARGV []) {INT int_value = 123123; pthread_t t2; pthread_create (& t2, NULL, & производить, & int_value); pthread_t t1; pthread_create (& t1, NULL, & потреблять, NULL); сон (1000); } В функции пустоте * потреблять (пустоты *) Указанный int_value несет в себе зависимость для new_int_value так что если atomic_load_explicit (& я, memory_order_consume); считывает значение, записанное некоторым atomic_store_explicit (& я, int_value, memory_order_release); Затем new_int_value вычисление зависимостей упорядоченная-до atomic_store_explicit (& я, int_value, memory_order_release) ;. Но то, что полезно вещи могут зависимость упорядоченная-прежде, чем дать нам? В настоящее время я думаю, что memory_order_consume вполне может быть заменен memory_order_acquire, не вызывая каких-либо расы данных ...
Some Name
1

голосов
1

ответ
39

Просмотры

Потребители инъекционных implicits в Scala

У меня есть следующие черты: черта Tr1 {неявных Вэл я: Int} черт Ctx {Tr: Tr1 => Защита теста: Int = неявно [Int]} И теперь я бег моего приложения следующим образом: основные (четкости аргументов: Array [String]): Unit = {вал CTX: CTX = новый Ctx с Tr1 {переопределять неявные Вэла я: Int = 123} Println (ctx.test) // печатает 123 !!! } Удивительно печатает 123. Я думал, что мы имеем Вэла я deafultly инициализируется в 0, но компилятор понял, что у нас есть и экземпляр, который переопределяет неявную Вэл я: Int к значению 123. Теперь я запутался о неявном разрешении в таких случаях. Можете ли вы exaplain?
Some Name
2

голосов
1

ответ
23

Просмотры

Как выделить массив структур с гибкими элементами массива comformingly?

У меня следующая структура с гибким элементом массива: тестом STRUCT {size_t SZ; Const символ ул []; }; Теперь я хочу, чтобы выделить некоторую память, чтобы поместить это непрерывно STRUCT (например, в массиве). Проблема заключается в декларации, как тест структуры test_arr [] не определен поведение. 6.7.2.1 (р3): последний член структуры с более чем одним именем элемента может иметь неполный тип массива; такая структура (и любой союз, содержащий, возможно, рекурсивно, член, что такая структура) не должна быть членом структуры или элемент массива. Мы знаем, что указатель, возвращаемый таНос может быть преобразован в указатель на любой тип objecut с фундаментальным выравниванием. Рассмотрим следующий код: * OBJ пустот = таНос (100 * SizeOf (тест-структура)); // достаточно памяти структура теста * t1 = OBJ; t1 -> SZ = 2; t1 - ул = { 'а', 'Ь'}>; структура тест * t2 = (* аннулируется) (((символ *) OBJ) + SizeOf (тест структуры) + SizeOf (Char [2])); // не соответствующее Что такое соответствующий способ сделать это?
Some Name
1

голосов
1

ответ
0

Просмотры

Написание типизированного кода без шаблонного

Я работаю над системой, которая использует внешнюю конфигурацию и делает какие-то действия в зависимости от конфигурации, представленной. У меня следующие черты (методы опущены для простоты): запечатано черта Тр [Т] случай объект Tr1 расширяет Тр [Строка] случай объект Tr2 расширяет Тр [Int] случай объект Tr3 расширяет Tr [Array [Byte]] запечатано черта ТРР [T ] случай объект Trr1 расширяет Трр [Строка] случай объект Trr2 расширяет Трр [Int] случай объект Trr3 расширяет Трр [Массив [Байты]] признак Trrr [Т] случай объект Trrr1 расширяет Trrr [(String, Int)] случай объект Trrr2 расширяет Trrr [(Int, String)] дело объект Trrr3 расширяет Trrr [(Int, Int)] корпус объекта Trrr4 расширяет Trrr [(String, String)] дело объект Trrr5 расширяет Trrr [(String, Array [Byte])] И действие: защиту doUsefulAction [T, F] (t1: Tr [T], t2: Trr [F], t3: Trrr [(T, F)]) = {// ... бросить новый IllegalArgumentException} случай «2» => // такой же, как и выше шаблонный случае «3» => // же шаблонными, как и выше случае _ => певда IllegalArgumentException} Дело в том, есть тонны шаблонного с сопоставлением с образцом. И это только три черты. В случае 10 он становится нечитаемым. Есть ли способ, чтобы справиться с такой конфигурацией еще оставаясь типы и избежать InstanceOf? Может быть, макрос может быть полезным здесь? Есть ли способ, чтобы справиться с такой конфигурацией еще оставаясь типы и избежать InstanceOf? Может быть, макрос может быть полезным здесь? Есть ли способ, чтобы справиться с такой конфигурацией еще оставаясь типы и избежать InstanceOf? Может быть, макрос может быть полезным здесь?
Some Name
1

голосов
1

ответ
0

Просмотры

Есть ли способ, чтобы скомпилировать класс с единственным профилем и исключить его иначе?

У меня есть Maven проект с родительским ПОМ: java8 Java-7-начале у меня есть подмодуль проект-мод-1: Родитель | __project-мод-1 | | | | __Pom.xml | | __Pom.xml Дело в том, что я хочу, чтобы добавить класс открытый класс J8SpecificUtil {// содержит JDK8 конкретные Utils} проецировать-мод-1, но он будет использовать JDK8 специфические особенности. Так что я не хочу мешать компиляции для ранее JDK, но я хочу, он добавляется в JDK8 строит и использоваться пользователем с JDK8 или более поздней версии. Что такое общий способ решить такую ​​проблему с Maven?
Some Name
1

голосов
1

ответ
198

Просмотры

Get all records with inner record from last month - MongoDB C# SDK

Я стараюсь, чтобы получить все пользователи, которые имели какой-либо вид деятельности в прошлом месяце из моей базы данных MongoDB, используя C # SDK. Моя запись пользователя содержит перечень статистических отчетов (как ObjctId) с датой создания. общественный класс UserRecord {частная строка ПгвЬЫат; общественного ObjectId Id {получить; задавать; } общественности список Статистика {получить; задавать; }} И моя функция конструктор запросов выглядит следующим образом: статический IMongoQuery GenerateGetLiveUsersQuery (DateTime lastStatistic) {Список запросов = новый список (); queries.Add ((Query.GTE (U => U.Statistics.OrderByDescending (х => x.CreationTime) .Первый () CreationTime, lastStatistic)).); /// .... Далее "queries.Add" ... вернуться Query.And (запросов); } Не уверен, что я м делает неправильно, но я получаю сообщение об ошибке ан System.NotSupportedException при попытке построить запрос (запрос GTE). Невозможно определить информацию о сериализации для выражения: (UserRecord U) => Enumerable.First (Enumerable.OrderByDescending (U.Statistics, (ObjectId х) => x.CreationTime)) CreationTime..
some_name
1

голосов
1

ответ
42

Просмотры

Интерпретируя соответствующим образом выровненных указателей на объект с объявленным типом

Стандарт позволяет подавать указатели на объект типа друг с другом, если они соответствующим образом выровнены. 6.3.2.3 (P7): Указатель на тип объекта может быть преобразован в указатель на другой тип объекта. Если полученный указатель не правильно aligned68) для ссылочного типа, поведение не определено. Стандарт позволяет копировать представление объекта в полукокс [SizeOf (the_object_type)] 6.2.6.1 (Р4): значение может быть скопировано в объект типа без знака полукокса [N] (например, с помощью тетсра); результирующий набор байтов называется объектом представление значения. Кроме того, Стандарт четко указано, что одно из двух значений (кроме NaNs) с тем же представлением объекта сравнивать равны, но значения, которые сравнивают равно могут иметь различные представления объектов. Рассмотрим следующий код: структура contains_64_t {значение uint64_t; }; INT основных (INT арг, Const символ * ARGV []) {_Alignas (структура contains_64_t) символ buf_2_64t [2 * SizeOf (структура contains_64_t)]; структура contains_64_t c64_1; c64_1.value = 1; структура contains_64_t c64_2; c64_2.value = 2; тетср (buf_2_64t, & c64_1, SizeOf (c64_1)); тетср (buf_2_64t + SizeOf (c64_1), & c64_2, SizeOf (c64_2)); // соответствующим образом выровнены, хорошо структура contains_64_t * c64_ptr = (структура contains_64_t *) buf_2_64t; Е ( "Значение%" PRIu64 "\ п", c64_ptr -> значение); } Вопрос: Является ли это педантичный писать код, как это? Если нет, то какие проблемы мы можем столкнуться, если сделать это? Из того, что я вижу, мы можем бросить символ * на структуру contains_64_t, поскольку он соответствующим образом выровнены. Но проблема в том, что объявленный тип BUF является символ [2 * SizeOf (структура contains_64_t)]. Поэтому формально говоря, мы не можем получить доступ к БУФАМ через Lvalue из STRUCT contains_64_t типа *. Но это было бы странно, так как мы соответствующим образом выровнены указатель и буквально идентичное представление объекта. Конечно, мы могли бы объявить STRUCT contains_64_t BUF [2] ;, но решение не будет работать в случае структуры, содержащей переменно длина массива UPD: Would делает такое выравнивание буфера будет достаточно, если мы предположим, что мы составляем с GCC?
Some Name
2

голосов
1

ответ
32

Просмотры

Opaque struct that is declared but never defined

Скажем, у меня есть заявление о my_header.h STRUCT my_struct; структура my_struct * my_struct_create (); недействительными my_struct_use (структура my_struct *); недействительный my_struct_delete (структура my_struct *); В случае, если мы определим их следующим образом в my_header.c: STRUCT some_struct_came_from_3rdparty_lib; структура my_struct * my_struct_create () {структура some_struct_came_from_3rdparty_lib * PTR = // создать объект возврата (STRUCT my_struct *) PTR; // действует преобразование указателя, хорошо} // недействительным my_struct_use силу определение my_struct_delete опущено ВОПРОС: Имеет ли следующий код причины UB: структура my_struct * PTR = my_struct_create (); my_struct_use (PTR); Я думаю, что это делает. Даже при том, что стандарт позволяет преобразовывать указатели, которые были правильно выровнены 6.3.2.3 (Р7): Указатель на тип объекта может быть преобразован в указатель на другой тип объекта. Если полученный указатель не правильно aligned68) для ссылочного типа, поведение не определено. Структура my_struct * и структура some_struct_came_from_3rdparty_lib *, тем не менее несовместимые типы 6.7.6.1 (p2): Для двух типов указателей совместимы, и должны быть одинаково квалифицированы и как должны быть указатели на совместимые типы. Таким образом, доступ (чтение) STRUCT some_struct_came_from_3rdparty_lib * через объект типа структуры my_struct * в STRUCT my_struct заявление * PTR = my_struct_create () должно привести к UB. Делает ли это причина какой-либо смысл? как должны быть одинаково квалифицированы и как должны быть указатели на совместимые типы. Таким образом, доступ (чтение) STRUCT some_struct_came_from_3rdparty_lib * через объект типа структуры my_struct * в STRUCT my_struct заявление * PTR = my_struct_create () должно привести к UB. Делает ли это причина какой-либо смысл? как должны быть одинаково квалифицированы и как должны быть указатели на совместимые типы. Таким образом, доступ (чтение) STRUCT some_struct_came_from_3rdparty_lib * через объект типа структуры my_struct * в STRUCT my_struct заявление * PTR = my_struct_create () должно привести к UB. Делает ли это причина какой-либо смысл?
Some Name
1

голосов
1

ответ
3.3k

Просмотры

No OpKernel was registered to support Op 'Conv2D' with these attrs

InvalidArgumentError (смотрите выше TRACEBACK): Нет OpKernel был зарегистрирован для поддержки Op «Conv2D» с этим ATTRS. Зарегистрированные устройства: [CPU, GPU], Зарегистрированные ядра: устройство = 'CPU'; Т в [DT_HALF] устройства = 'процессора'; Т в [DT_FLOAT] устройство = 'ГПУ'; Т в [DT_HALF] устройство = 'ГПУ'; Т в [DT_FLOAT] [[Node: ко = Conv2D [Т = DT_DOUBLE, data_format = "NHWC", обивка = "ЖЕ", махи = [1, 1, 1, 1], use_cudnn_on_gpu = истина] (Уста, Const_1) ]]
this_some_name
1

голосов
1

ответ
579

Просмотры

Разбор XML в Python с несколькими тегами

Я пытаюсь разобрать файл XML. Мне удалось при разборе тегов в верхнем слое, но теперь у меня есть тег внутри тега, и я не получаю правильный вывод. XML FILE: HT knooppuntIntercitystation Den Bosch Хертогенбоса Хертогенбоса NL Hertogenbosch ( 's) Den Bosch ALMO stoptreinstation Oostvaard Oostvaarders Almere Oostvaarders NL ATN stoptreinstation Aalten Aalten Aalten NL ASA intercitystation Amstel Amsterdam Amstel Amsterdam Amstel NL Моя функция питона: импорт XML .etree.ElementTree е = xml.etree.ElementTree.parse ( 'info.xml'). GetRoot () для stationsnamens в e.findall (» Станция «): попробуйте: син = stationsnamens.find (» Synoniemen / Synoniem ') печать текста (син), за исключением:. Печать (Exception) Я пытаюсь напечатать каждое поле Synoniemen Eсти, но только если он существует. Кроме того, «Кодекс» должен быть напечатан. Формат вывода: {код}: {Synoniemen}
Some Name
1

голосов
3

ответ
91

Просмотры

Java переменной из другого класса

У меня есть 3-х классов: Main, AutoHuur, Авто. Everythign работает, но одна вещь. Я не могу показаться, чтобы получить переменную «Prijs» от моего Auto.class, чтобы отобразить в моем ToString в моем AutoHuur.class. Он продолжает появляться как 0. Почему это? (? Я знаю, что я инициализировать его в 0, если это нуль, но почему это нуль, а не значение из переменной prijsPerDag Auto.class) Спасибо Main.class: общественный класс Main {государственной статической силы основных (String [] арг) {AutoHuur AH1 = новый AutoHuur (); System.out.println ( "Eerste autohuur: \ п" + AH1 + "\ п"); Klant к = новый Klant ( "Mijnheer де Врис"); k.setKorting (10,0); ah1.setHuurder (к); Auto a1 = новый Auto ( "Peugeot 207", 50,0); ah1.setGehuurdeAuto (a1); ah1.setAantalDagen (4); System.out.println (» } Общественного Авто getGehuurdeAuto () {вернуться gehuurdeAuto; } Общественного Авто getPrijs () {вернуться Prijs; } Общественного недействительными setAantalDagen (целое число NWD) {aantalDagen = NWD; } Строка ToString общественности () {Строка s = ""; если (gehuurdeAuto == NULL) {s = s + "эр Geen авто bekend \ п"; } иначе {S = S + gehuurdeAuto; } Если (huurder == NULL) {S = S + "эр Geen huurder bekend \ п"; } Еще {s = s + huurder; } Если (aantalDagen == NULL) {s = s + "aantal Dagen: 0"; } еще {S = S + "aantal Dagen:" + aantalDagen; } Если (Prijs == NULL) {s = s + "ы Даты 0,0 Kost"; } еще {S = S + "ы Даты" + Kost Prijs; } Возвращение с; }} Auto.class: открытый класс Авто {личный тип строки; частный двухместный prijsPerDag; общественного Auto (String Т.П., Double nwPr) {тип = ф; prijsPerDag = nwPr; } Общественного недействительными setPrijsPerDag (двойной prPd) {prijsPerDag = prPd; } Общественности Double getPrijsPerDag () {вернуться prijsPerDag; } Общественной Строки ToString () {Строка з = тип + "встретил Prijs за НАГа:" + prijsPerDag + "\ п"; вернуться с; }}
Some Name
1

голосов
1

ответ
293

Просмотры

«ОШИБКА: Столбец не существует» С существующего столбца

У меня есть следующие функции Java. Когда я вхожу ingredientNaam как «Banaan» он дает мне ошибку: колонка не существует. Тем не менее, столбец существует. Я знаю, что это может иметь что-то делать с верхним / нижним регистром, а потому, что мне нужен .get (0) в конце заявления, я не знаю, как я могу это исправить. Удаление .get (0) приводит список возвращаемого значения вместо ингредиента, так что мне нужно эта часть. Есть идеи? Очень признателен. Ингредиент общественного findByString (String ingredientNaam) {вернуть selectIngredients ( "SELECT * FROM ингредиента WHERE ingredientnaam =" + ingredientNaam) .get (0); }
Some Name
1

голосов
1

ответ
216

Просмотры

Использование Компаратор от Scala

Что случилось с использованием Comparator от Scala? Вызов не компилируется: java.util.Comparator.comparing (новый java.util.function.Function [String, java.math.BigInteger] {переопределить Защиту применить (т: String) = новый java.math.BigInteger (т) }) https://ideone.com/OdHvBU сообщение об ошибке очень неясно. Main.scala: 3: ошибка: перегружена значение Метод сравнения с альтернативными вариантами: [Т, U: U]] (х $ 1: java.util.function.Function [_>: Т, _ Т _: U]) Java .util.Comparator [T] не может быть применен к (java.util.function.Function [String, java.math.BigInteger]) java.util.Comparator.comparing (^ что случилось с этим?
Some Name
1

голосов
1

ответ
75

Просмотры

представление Понимание объекта [дубликат]

Этот вопрос уже есть ответ здесь: Может тетср быть использован для типа каламбуров? 5 ответов Вопрос: Если у нас есть два не совместимые структуры или объединения, но объекты обоих типов имеют одинаковый размер представления объекта я получил бы Undefined / Не выбрано / вполне определенное поведение, если я беру представление объекта некоторого объекта одного типов и «переосмысливать» это как другой тип. (Я надеюсь, что формулировка не странно). Мои мысли: Я упомянул структуру или объединение, потому что N6.2.6.1 (p6): Значение структуры или объединения объекта никогда не ловушка Также я обнаружил, что мы можем скопировать значение объекта в массив символов 6.2.6.1 (р4): значение может быть скопировано в объект типа без знака полукокса [N] (например, с помощью тетсра); результирующий набор байтов называется объектом представление значения. Но стандарт не устанавливает, что мы можем скопировать представление объекта обратно. Так что я думаю, что это UB, чтобы скопировать изображение объекта обратно в объект типа, имеющего представление одного и того же размера (даже если это не ловушка), но я не уверен ... Пример: структура test1_t {Int А; долго б; }; test2_t структура {INT с; INT д; ИНТ е; ИНТ е; }; INT основных () {структура test1_t t1 = {.а = 100, .b = 2000}; структура test2_t t2 = {.c = 1000, .d = 20000, .e = 300000, .f = 4000000}; size_t размера; если ((размер = SizeOf (структура test1_t)) == SizeOf (структура test2_t)) {символ Repr [размер]; тетср (& магнезия, и t2, размер); // так как значения структуры или объединения // никогда не ловушка, почему Дон» т мы рассматриваем // представления в виде какого-либо объекта // типа структура test_t1 тетсра (& t1, & предста, размер); Е ( "T1.a =% d \ п", T1.a); //t1.a = 1000 Е ( "T1.b =% d \ п", T1.b); //t1.b = 300000}} В результате может быть объяснено с дополнением в STRUCT test1_t после Int А ;.
Some Name
1

голосов
1

ответ
85

Просмотры

Эффекты использовать для упаковки методы нечистых?

Я пытаюсь понять, как использовать эффект монады (cats.effect.IO или scalaz.IO не имеет значения). Представьте У меня есть следующий метод: Защита экстракт (ул: String): String = {если (str.contains ( "123")) "123" еще певда IllegalArgumentException ( "! Boom")} Так как этот метод является нечистым (броски исключение), и мне нужно, чтобы объединить его результат с другим effectful вычислений (сети-IO) это хорошая практика, чтобы просто обернуть его в IO следующим образом: защиту экстракт (ул: String): IO [String] = IO {если (ул .Contains ( "123")) "123" еще певд IllegalArgumentException ( "Бум!")} это общий случай использования монад Effect?
Some Name
1

голосов
1

ответ
40

Просмотры

Или добавить класс типов метод с помощью неявной?

Я проектирование рода услуг и сталкиваюсь с проектной проблемой. Вот то, что я в настоящее время: черта Service {Защиту isFailed (): Boolean Защиту заводится (): Ед остановки (): Unit} А для того, чтобы группа услуг, связанных друг с другом в группе (для того, чтобы перезапустить / восстановить группа, а не другие услуги), я создал следующий пакет объекта: объект приложения пакета {тип FaultTolerantServiceGroup = Seq [Service] объект FaultTolerantServiceGroup {Защиту применяются (SVC: Сервис *): FaultTolerantServiceGroup = Seq (SVC: _ *)} класса FaultTolerantServiceGroupOps (значение F: FaultTolerantServiceGroup) {Защиты hasFailed: Boolean = F.forall) (_ не удался (.)} Trait FaultTolerantServiceGroupSyntax {неявной Защита serviceGroup2Ops (F: FaultTolerantServiceGroup) = новые FaultTolerantServiceGroupOps (F)}} Таким образом я добавил метод hasFailed к FaultTolerantServiceGroup. Но я не уверен, что об этом решении. Было бы лучше, чтобы определить класс типов, скажем, черта смотрибельна [T] {Защита hasFailed (т: Т): Boolean} И неявно обеспечивает экземпляр смотрибелен [FaultTolerantServiceGroup]?
Some Name
1

голосов
1

ответ
44

Просмотры

Путаница в отношении связывания идентификаторов

Я читаю C Standard N1570 и столкнулся некоторые недоразумения о связи. Как указано в разделе 6.2.2. Взаимосвязи объектов: 5 Если объявление идентификатора для функции не имеет хранения класса спецификатор, его связи определяется точно так, как если бы он был объявлен с спецификатора EXTERN хранения класса. Если объявление идентификатора для объекта имеет объем файла и не хранение класса спецификатора, его связь является внешней. Таким образом, я понял, что нет никакой разницы между экстерном и без хранения класса спецификатора в объявлении идентификаторов объектов с области файл. Давайте condider следующего примера: test.h: #ifndef _TEST_H #define _TEST_H Int А; недействительным прирост (); #endif // _ TEST_H test.c: #include "test.h" недействительным прирост () {а + = 2; } Main.c: #include #include "test.h" ИНТ основной (интермедиат ARGC, символ Const * ARGV []) {приращение (); Е ( "а =% d \ п", а); } Поскольку объявляется иметь внешнюю связь (объем файла, без хранения класса спецификатор) а = 2 печатается, как и ожидалось. Поэтому я заменил Провозглашение иметь Экстерн спецификатора и не ожидал, что никакой разницы (в соответствии с 6.2.2 # 5 я цитировал выше): test.h: #ifndef _TEST_H #define _TEST_H ехЬегп Int А; //
Some Name
1

голосов
1

ответ
49

Просмотры

Трассировка статической функции инлайн

Я пытаюсь добавить некоторые отладки средства для моего приложения, и теперь застрял с использованием статической функции инлайн. Как я узнал из этого ответа можно было поставить статическое определение встроенных функций в файл заголовок, чтобы функция не инстанцирована дважды в случае, если файл включен в несколько раз. Так что мне было интересно, и пытался определить подобную статическую функцию инлайн для отслеживания invokation и поместить его в файл заголовка: #ifndef TRACE_H #define TRACE_H статический встроенный аннулируются трассировки () {Е ( "Текущая строка% d, Func% s, файл % s \ п», __LINE__, __func__, __FILE__); } #Endif // TRACE_H Я попытался это потому, что статический рядный гораздо меньше подвержены ошибкам, то макрос. Проблема заключается в том, что простой INT основного (INT ARGC, символ Const * ARGV []) {след (); } Печатает текущую строку 8, Func след, файл /home/somename/include/trace.h, который, очевидно, бесполезно. Таким образом, для отслеживания цели есть ли другой способ, если определить макрос #define трассировки () \ Е ( "Текущая строка% d,% s FUNC, файл% s \ п", __LINE__, __func__, __FILE__); \
Some Name
1

голосов
1

ответ
82

Просмотры

JVM не убивают на OnOutOfMemoryError

Я использую JDK 1.8.0_u66, на котором -XX: + опция CrashOnOutOfMemoryError еще не доступен. Так я оказался в настройке -XX: OnOutOfMemoryError = «убить -9% р» Хорошо, я написал следующее простое приложение: государственной статической силы основных (String [] арг) бросает исключение {замок блокировки = новый ReentrantLock (); Состояние состояние = lock.newCondition (); в то время как (истинно) {новый Thread (() -> {lock.lock (), попробуйте {в то время (правда) {попробуйте {condition.await ();} поймать (Exception е) {}}} наконец {lock.unlock ( ); } }).Начните(); }} Приложение завершается с Исключение ошибок в потоке «основного» java.lang.OutOfMemoryError: не удалось создать новую родную нить в доли секунды, но не убить, как я ожидал, так как я установил опцию -XX: OnOutOfMemoryError = «убить -9% р». Я думаю, что убийство JVM выполняется в отдельном потоке, но это не возможно создать, так как предел уже достигнут. Таким образом, приложение молча продолжает работать в неустойчивом состоянии.
Some Name
1

голосов
1

ответ
68

Просмотры

Представление Ловушка для структур

Я хотел бы понять концепцию представления ловушки в деталях. Определение довольно ясно Раздел 3.19.4: объектное представление, что не нужно представлять значение типа объекта Ладно, я хотел бы попробовать некоторые примеры. test_t структура {uint64_t члена; }; структура test_t * test_ptr = таНос (SizeOf (uint32_t)); структура test_t = * test_ptr; // 1 Я не думаю, что // 1 вызывает UB здесь, потому Раздел 6.2.6.1: Если сохраненное значение объекта имеет такое представление и читается именующее выражение, которое не имеет символьный тип, поведение не определено. но значение структуры или объединения объекта никогда не ловушкой представление, даже если значение члена структуры или объединения объекта может быть ловушкой представление. Я думаю, что UB будет вызван чем-то вроде Е ( "Test.
Some Name
1

голосов
1

ответ
39

Просмотры

Использование неявного объявления для сокрытия вспомогательных функций

Как указано здесь C делает неявное объявление функций, которые он не знает. Поэтому я, как правило, использовать его для сокрытия деталей реализации. Я определил следующий файл заголовка: #ifndef TEST_H #define #define TEST_H PRINT (MSG) \ сделать {\ _print_info_msg (МСГ); \ Е (МСГ); \}, а (0) #endif // TEST_H и соответствующий файл C : #include "test.h" пустота _print_info_msg (Const символ * строка) {Е ( "INFO: печать% s \ N", ул); } При компиляции этого кода компилятор предупреждает, что неявная декларация функции «_print_info_msg» [-Wimplicit-функции декларирования]. Преимущество этого я вижу в том, что мы непосредственно не подвергать вспомогательную функцию (_print_info_msg) для тех, кто включает в себя test.h пока мы используем линкер так предоставляется _print_info_msg реализации. Я не уверен в этом подходе ... Есть ли еще смысл? Для меня это выглядит вроде некрасиво, но это единственный «вариант использования» я мог бы найти для неявной декларации.
Some Name
0

голосов
0

ответ
16

Просмотры

Оставляя точное определение библиотеки клиента

Я работаю над приложением, состоящим из нескольких модулей, которые построены как статические библиотеки. Это выглядит как корень | __module1 | | __Mod1.h | | __Module2 | | __Mod2.h | main.C mod1.h (охранники заголовков опущено): // возвращает 0 в случае успешного завершения кода ошибки в противном случае INT do_mod1 (); mod2.h (охранники заголовков опущены): // возвращает 0 в случае успешного завершения кода ошибки в противном случае INT do_mod2 (); Я определил коды ошибок прямо в заголовке библиотеки: mod1.h: #define MOD1_ERROR 1 Int do_mod1 (); mod2.h #define MOD2_ERROR 2 // 1 не может быть использован в противном случае было бы ввести конфликт Int do_mod2 (); Проблема в том, что может быть конфликт между кодами ошибок через модули, внедряющих ненужных зависимостей между друг другом. Поэтому я решил ввести Экстерн декларацию, поместить код ошибки в отдельном заголовке в модулях и обеспечивает определение в приложении, которое использует эти модули. Что-то вроде этого: mod1err.h: экстерном сопзЬ Int mod1_error; mod2err.h: ехЬегп Const INT mod2_error; application_error.h: #include #include mod1err.h mod2err.h Const INT mod1_error = 1; Const INT mod2_error = 2; Это хорошая практика, чтобы использовать Экстерн декларации так или там может быть лучше подход ??
Some Name
3

голосов
1

ответ
68

Просмотры

Как подсчитать размер структуры?

В человеке Unix (7) Я нашел следующее: имя пути: сокет домена UNIX, может быть связан с нулем в конце файловой системы, используя имя пути связывания (2). Когда адрес сокета имени пути возвращается (один из системных вызовов, отмеченных выше), его длина составляет offsetof (структура sockaddr_un, sun_path) + StrLen (sun_path) + 1 sockaddr_un структура определяется как структура sockaddr_un {sa_family_t sun_family; / * AF_UNIX * / символ sun_path [108]; / * Путь * /}; Так что я думаю, что мы можем просто STRLEN (sun_path) + SizeOf (sun_family) Я не понимаю +1 они добавили. Можете ли вы дать объяснение? Я понимаю, что offsetof использует для portabiliy, как описано в Linux, выше offsetof () выражение приравнивает к тому же значению, SizeOf (sa_family_t), но некоторые другие реализации включают в себя другие поля перед sun_path, так что выражение offsetof () более переносимо описывает размер адресной структуры. Но это +1 не ясно для меня.
Some Name
3

голосов
2

ответ
25

Просмотры

Сопоставление с образцом в Scala с тематическими классами

Я разработка модели для удаленных хранилищ и в конечном итоге с: запечатанном черты StorageTag случае объектом ГКС расширяет случай объект StorageTag S3 расширяет StorageTag запечатана черты StorageFile [T
Some Name
2

голосов
1

ответ
85

Просмотры

LazyLogging включена отладка?

Я пришел из Java мира и в Java мы использовали для тестирования, если отладка включена перед входом с уровнем отладки. Что-то вроде этого: если (logger.isDebugEnabled) logger.debug ( «Отладка») Это делается для того, чтобы избежать оценки аргументов, переданных в logger.debug. Должны ли мы сделать то же самое с LazyLogging Scala черта? Класс испытаний распространяется LazyLogging {вал veryBigSeq: Seq [String] = // ... logger.debug (veryBigSeq.toString ()) //
Some Name
4

голосов
3

ответ
150

Просмотры

Search/filter for an array

Я делаю функцию поиска массива. У меня есть вход [текст], где, например, я ставлю «запрет», то мне нужно все результаты, которые начинаются с «запретом», чтобы показать, например, банан, банан молочный коктейль, банан (жареный) и т.д. Как я могу идти о делая это? Я пытался, но каждый раз, когда я пытаюсь это не является точным. То, что я пытался ниже. Что у меня есть: вар InputBox = document.getElementById ( 'компонент'); вар ingredienten = [ "Аппель", "Aardbei", "Aardappelen", "Banaan", "Bananen", "банан"] inputBox.onkeydown = функция (ЭВТ) {$ ( "# автополный") пустой (). // ВСТАВИТЬ КОД ДЛЯ ПОИСКА ФУНКЦИИ} Я был один, который был очень близок, однако, когда я напечатал «запрет» он придумал «Aardbei». Что, очевидно, неправильно. Вот, может быть, я что-то упускается из виду? вар InputBox = document.getElementById ( 'ингредиент'); вар ingredienten = [ "Banaan", "Bananen", "Baan", "банан", "baaanana"]; inputBox.onkeydown = функция (ЭВТ) {$ ( "# автозаполнения") пустой (). вход вар, фильтр, а, я; вход = document.getElementById ( "myInput"); фильтр = inputBox.value.toUpperCase (); для (я = 0; г <ingredienten.length; я ++) {а = ingredienten [I]; если (a.toUpperCase () IndexOf (фильтр)> -1.) {//console.log(a); . $ ( "# Автозаполнения") добавить ( "" + а + ""); } Еще {}} "Baaanana"]; inputBox.onkeydown = функция (ЭВТ) {$ ( "# автозаполнения") пустой (). вход вар, фильтр, а, я; вход = document.getElementById ( "myInput"); фильтр = inputBox.value.toUpperCase (); для (я = 0; г <ingredienten.length; я ++) {а = ingredienten [I]; если (a.toUpperCase () IndexOf (фильтр)> -1.) {//console.log(a); . $ ( "# Автозаполнения") добавить ( "" + а + ""); } Еще {}} "Baaanana"]; inputBox.onkeydown = функция (ЭВТ) {$ ( "# автозаполнения") пустой (). вход вар, фильтр, а, я; вход = document.getElementById ( "myInput"); фильтр = inputBox.value.toUpperCase (); для (я = 0; г <ingredienten.length; я ++) {а = ingredienten [I]; если (a.toUpperCase () IndexOf (фильтр)> -1.) {//console.log(a); . $ ( "# Автозаполнения") добавить ( "" + а + ""); } Еще {}} IndexOf (фильтр)> -1) {//console.log(a); . $ ( "# Автозаполнения") добавить ( "" + а + ""); } Еще {}} IndexOf (фильтр)> -1) {//console.log(a); . $ ( "# Автозаполнения") добавить ( "" + а + ""); } Еще {}}
Some Name
5

голосов
2

ответ
6.3k

Просмотры

MySQL Database Design with Internationalization

Я собираюсь начать работу над приложением среднего размера, и я планирую это дб дизайн. Единственное, что я не уверен, что это. У меня будет много таблиц, которые будут нуждаться интернационализацию, такие как: «membership_options, gender_options, language_options и т.д.» Каждая из этих таблиц поделюсь общие поля i18n, как: «название, alternative_title, SHORT_DESCRIPTION, описание» На Ваш взгляд, что является лучшим способом сделать это? Есть таблица i18n с теми же полями для каждой из таблиц, которые будут нуждаться в них? или сделать что-то вроде: Членский таблица Пол таблицы ---------------- -------------- ид | created_at идентификатор | created_at 1 - 22.03.2001 1 - 14.08.2002 2 - 22.03.2001 2 - 14,08. 2002 Общая таблица перевода ------------------------- record_id | table_name | string_name | alternative_title | .... | id_language 1 - членство в регулярный нуль 1 (английский) 1 - членство Normale нуль 2 (итальянский) 1 - пол человека нуль 1 (английский) 1 -пол Uomo нуль 2 (итальянский) Это позволит избежать повторения мне что-то вроде: membership_translation стол ----------------------------- membership_id | имя | alternative_title | id_lang 1 регулярна нуль 1 1 Normale нуль 2 gender_translation таблица ----------------------------- gender_id | имя | alternative_title | id_lang 1 человек нуль 1 1 Uomo нуль 2 и так далее, так что я, вероятно, сократить число таблиц БД, но я не уверен насчет performance.I'm не так много дизайнера БД, поэтому, пожалуйста, дайте мне знать.
Some name
2

голосов
1

ответ
398

Просмотры

Как один скрыть класс Response в Django REST Swagger?

Я пытаюсь скрыть класс ответа (модель и модель схемы) из API Docs Я пишу с помощью Django REST Swagger. Я думал, может быть, я мог бы установить @APIModelProperty (скрытый = истинный) - но не повезло. Я не могу найти что-либо в документации Django REST чванство либо. Есть идеи? Благодарю.
some_name_dev
2

голосов
2

ответ
663

Просмотры

OpenLayersWidget & Django администратора Карты над Https

Я еще начинающий пользователь Django / Python, поэтому приносим извинения за основной вопрос. Я бегу в проблему, где карты не показываются в моем Django администратора. Я надеялся решить эту проблему, добавив класс OpenLayersWidget к моему forms.py файл проекта, ссылка в документации Django здесь: https://docs.djangoproject.com/en/1.9/ref/contrib/gis/forms-api /#django.contrib.gis.widgets.OpenLayersWidget. Увидеть ниже. от Джанго импорта форм из django.contrib.gis.admin.widgets импорта класса OpenLayersWidget OpenLayersWidget (forms.TextInput): "" "Задание CDN из openlayers.js в классе СМИ." "" класса СМИ: JS = ( «https: //cdnjs.cloudflare.com/ajax/libs/openlayers/2.13.1' ), я уверен, что это слишком упрощенно. К сожалению, выше не работает над HTTPS.
some_name_dev
2

голосов
1

ответ
59

Просмотры

Заверните все исключения,

Я проектирование черта. черта хранение {Защита написать (данные: Array [Byte]): Unit} Класс StorageWriteException (т: Throwable) распространяется RuntimeException (т) Как сделать все нефатальное исключение, любой реализацией признака хранений заворачивают в StorageWriteException? Можно ли обойтись без упаковки его вручную во всех реализации?
Some Name
2

голосов
2

ответ
308

Просмотры

Что такое особенный 0x7F?

Я читаю Avro спецификацию формата и пытаюсь понять его реализацию. Вот метод для декодирования длинного значения: @Override открытого длинный readLong () бросает IOException {ensureBounds (10); INT б = ЬиЕ [поз ++] & 0xff; Int N = B & 0x7F; длинные л; если (б> 0x7F) {Ь = ЬиЕ [поз ++] & 0xff; п ^ = (Ь & 0x7F) 0x7F) {Ь = ЬиЕ [поз ++] & 0xff; п ^ = (Ь & 0x7F) 0x7F) {Ь = ЬиЕ [поз ++] & 0xff; п ^ = (Ь & 0x7F) 0x7F) {// только низкие 28 биты могут быть установлены, так что это не будет нести // знакового бита к длинному л = innerLongDecode ((длинный) п); } Еще {л = п; }} Еще {л = п; }} Еще {л = п; }} Еще {л = п; } Если (поз> предел) {певд EOFException (); } Возвращение (л >>> 1) ^ - (л & 1); // обратно в дополнительном коде дополнения} Вопрос в том, почему мы всегда проверяем, если 0x7F меньше байт, мы только что прочитали?
Some Name
2

голосов
2

ответ
36

Просмотры

Как сделать не специализированный тип имеет метод, который принимает FUNCTION1?

У меня есть следующий класс: класс Эль [T] (т: Т) {Защиты doSome (F: T => Unit): Unit = е (т)} Так что я хочу, чтобы проверить функцию invokation для данного экземпляра Эля (I» м делать с Mockito). При выполнении теста VAL п = фиктивный (classOf [Int => Unit]) новый Элем (1) .doSome (е) верифицировать (е) .Не (1) я получил следующее исключение: Требуется, но не вызывается: function1.apply $ mcVI ​​$ зр (1); Тем не менее, было именно 1 взаимодействие с этим насмехаться: function1.apply (1); Это разумно, потому что Function1 специализируется на Int. Так что делает тест как вали F = фиктивный (classOf [AnyRef => Unit]) новый Эль (1.asInstanceOf [AnyRef]). DoSome (е) проверить (е) .Ну (1.asInstanceOf [AnyRef]) работает отлично. Есть ли способ избежать этого уродливых забросов в AnyRef? Может быть, есть еще один инструмент больше подходит для этого случая, чем Mockito?
Some Name
3

голосов
3

ответ
83

Просмотры

Что, не определение типа во типа означает?

От стандартной N1570 6.7.8: декларация ЬурейеЕ не вводит новый тип, только синоним типа так указано. Таким образом, я ожидал, что это не возможно, чтобы написать что-то вроде этого: ЬурейиЙ т; т * t_ptr; и он должен не компилироваться, так как тип не ввести синоним при условии. Но это нормально: Demo. Так что же это значит, когда и почему это компилировать?
Some Name
2

голосов
1

ответ
24

Просмотры

Переменная из другой функции не видно?

Я написал следующий скрипт: бар () {эхо $ (Foo)> & 2 эхо "бар"> & 2 эхо $ VARIABLE> & 2} Foo () {эхо "Foo"> & 2 VARIABLE = "тест" эхо $ VARIABLE> & 2} бар выход есть тест Foo бар Но если бы я написал это: бар () {Foo эхо "бар"> & 2 эхо $ VARIABLE> & 2} Foo () {эхо "Foo"> & 2 VARIABLE = "тест" эхо $ VARIABLE> & 2 } бар Он печатает то, что мне нужно: Foo тест-бар проверки вопрос заключается в том, что мне нужно отправить результат Foo к & 2 все же мне нужно значение переменной, которое было задано при вызове к обув. Как это сделать в Баш?
Some Name
2

голосов
1

ответ
44

Просмотры

Является ли порядок оценки параметра guraanteed в Скале?

Я знаю, что это гарантированно будет выполняться слева направо на Java, но как о Scala? У меня есть метод, который принимает массив и предел считываемых байт: Защита ScanArray (предел: Int, ба: Array [Byte]) = {} У меня также есть метод, который принимает массив, заполняет его с некоторыми данными и вернуть количество байтов, он заполнял: защиту fillArray (Ьа: Array [Byte]): Int = {...} вопрос заключается в том, является ли это хорошо называть ScanArray следующим образом: Вэл ба = новый Array [Byte] (16) ScanArray ( fillArray (ба), ба) Гарантирует ли поведение? Или это не гарантировано Scala Spec?
Some Name
1

голосов
0

ответ
37

Просмотры

Невозможно применить сконфигурированные параметры для звукового устройства

Я написал следующий простой пример с asoundlib.h: #include #include #include ЬурейиХ структур sound_device_config_t sound_device_config_t; структура sound_device_config_t {без знака скорости INT; неподписанные INT периоды; snd_pcm_uframes_t period_size; без знака INT каналов; snd_pcm_format_t sample_format; }; статической силы _configure_device (snd_pcm_t ** pcm_handle_ptr, Const символ * сд); INT основных (INT ARGC, символ * ARGV []) {sound_device_config_t * cfg_ptr = таНос (SizeOf (sound_device_config_t)); cfg_ptr -> Каналы = 2; cfg_ptr -> period_size = 2048; cfg_ptr -> Периоды = 2; cfg_ptr -> Скорость = 44100; cfg_ptr -> sample_format = SND_PCM_FORMAT_S16_LE; snd_pcm_t * pcm_handle; _configure_device (& pcm_handle, "plughw: 1,0"); возвращать 0; } Если _configure_device осуществляются в конце файла main.c следующим образом: статический недействительный _configure_device (snd_pcm_t ** pcm_handle_ptr, Const символ * sd_name) {snd_pcm_hw_params_t * hwparams; snd_pcm_stream_t поток = SND_PCM_STREAM_CAPTURE; snd_pcm_t * pcm_handle = * pcm_handle_ptr; snd_pcm_hw_params_alloca (& hwparams); Const символ * имя_устройства = strdup (sd_name); INT заблуждается; если ((ERR = snd_pcm_open (& pcm_handle, device_name, поток, 0)) <0) {fprintf (STDERR "Что-то пошло не так Результат код =% d \ п", ERR); fprintf (STDERR, "Сведения об ошибке:% s \ N", snd_strerror (ERR)); вернуть; } Если ((ERR = snd_pcm_hw_params_any (pcm_handle, hwparams)) <0) {fprintf (STDERR, "Сбой при инициализации остроумие ошибки% d \ N", ERR); fprintf (STDERR, " } Exact_rate = скорость; если ((ERR = snd_pcm_hw_params_set_rate_near (pcm_handle, hwparams, & exact_rate, и направление)) <0) {fprintf (STDERR, "настройки частоты дискретизации до% D Ошибка детали:.% s \ п", exact_rate, snd_strerror (ERR)); вернуть; } Еще если (! Ставка = exact_rate) {fprintf (STDERR "Скорость% d не поддерживается вашим оборудованием \ п \ скорость до ближайшего поддерживаемом% г вместо установки \ п.", Скорость, exact_rate); } Еще {Е ( "Установка скорости до% d:% s \ п", скорость, snd_strerror (ERR)); } Если ((ERR = snd_pcm_hw_params_set_channels (pcm_handle, hwparams, 2))) {fprintf (STDERR, "настройка количества каналов ошибки Подробности:.% S \ п", snd_strerror (ERR)); вернуть; } Еще {Е ( "Настройка каналов до 2:% s \ N", snd_strerror (ERR)); } Если ((ERR = snd_pcm_hw_params_set_periods (pcm_handle, hwparams, периоды, направление))) {fprintf (STDERR, "установка периодов для% D Ошибка Подробности:.% S \ п", периоды, snd_strerror (ERR)); вернуть; } Еще {Е ( "Установка периодов до% d:% s \ п", периоды, snd_strerror (ERR)); } Если ((ERR = snd_pcm_hw_params_set_buffer_size (pcm_handle, hwparams, (period_size * периоды) >> 2)) <0) {fprintf (STDERR, "Ошибка настройки размера буфера подробности:% s \ п.", Snd_strerror (ERR)); вернуть; } Еще {Е ( "Настройка статуса размера буфера:% s \ N", snd_strerror (ERR)); } Если ((ERR = snd_pcm_hw_params (pcm_handle, hwparams)) <0) {fprintf (STDERR, "Невозможно установить настроенные Params: Подробности.% S \ N", snd_strerror (ERR)); вернуть; } Еще {Е ( «Params успешно применен к ИКМ устройства \ п»); }} И это не работает. Настройка доступа к SND_PCM_ACCESS_RW_INTERLEAVED:: Успех Настройки формат SND_PCM_FORMAT_S16_LE: скорость Установки успеха в 44100: Удачная Настройке каналы до 2: Удачная Установки периоды 2: Ошибка установки Success размера буфера печатаются, когда я запускаю этот код следующее. Подробности: Недопустимый аргумент Но, когда я удаляю выделение конфигурации и инициализации sound_device_config_t (который я намеревался использовать для настройки звукового устройства и в настоящее время не используется) он работает совершенно нормально: Int основной (INT ARGC, символ * ARGV []) { snd_pcm_t * pcm_handle; _configure_device (& pcm_handle, "plughw: 1,0"); } напечатает Настройка доступа к SND_PCM_ACCESS_RW_INTERLEAVED: Успех Настройка формата SND_PCM_FORMAT_S16_LE: Успех Настройка скорости до 44100: Удачная Настройки каналов 2: Удачная Установки периодов 2: Успех Настройка статуса размера буфера: Успех Params успешно применяется на РСМ устройство Это выглядит как какая-то магия. Я удалил выделение объекта, который не используется в любом месте, и это влияет на поведение программы. Может быть, я пропустил некоторые UB здесь?
Some Name
1

голосов
3

ответ
63

Просмотры

Split string by commas that are not inside nested function invokation

Я хочу, чтобы разделить функции списка аргументов аргументов. Аргумент может быть вызов функции, как: Foo (...) или любой последовательности символа. Например: "fisrt_arg, some_foo (arg1, foo2 (arg1, arg2, foo3 ()), arg3), third_arg" Я хочу получить: Список ( "first_arg", «some_foo (arg1, foo2 (arg1, arg2, foo3 ( ))», "third_arg") Я реализовал это следующим образом (DEMO): частный [это] Защита tokenizeArgumentList (argumentListExpression: String): Список [String] = {вар functionInvokationCounter = 0 вара previousArgumentPosition = 0 аргументов вара: Список [String] = List () для (I functionInvokationCounter + = 1 случай ')' => если (functionInvokationCounter == 0) 0 еще functionInvokationCounter - = 1 случай '' если functionInvokationCounter == 0 => Аргументы: + = argumentListExpression.substring (previousArgumentPosition, я) .trim previousArgumentPosition = я + 1 случай _ =>} аргументы: + = argumentListExpression.substring (previousArgumentPosition) .trim аргументы} Это работает, но выглядит некрасиво. 3 изменяемые переменные и то, что мне не нравится больше всего, это: аргументы: + = argumentListExpression.substring (previousArgumentPosition) .trim аргументы После итерации argumentListExpression является сделаны, мы должны приложить последний аргумент. Можем ли мы реорганизовать его в более функционально? Может foldLeft бы помочь ...? подрезать аргументы} Это работает, но выглядит некрасиво. 3 изменяемые переменные и то, что мне не нравится больше всего, это: аргументы: + = argumentListExpression.substring (previousArgumentPosition) .trim аргументы После итерации argumentListExpression является сделаны, мы должны приложить последний аргумент. Можем ли мы реорганизовать его в более функционально? Может foldLeft бы помочь ...? подрезать аргументы} Это работает, но выглядит некрасиво. 3 изменяемые переменные и то, что мне не нравится больше всего, это: аргументы: + = argumentListExpression.substring (previousArgumentPosition) .trim аргументы После итерации argumentListExpression является сделаны, мы должны приложить последний аргумент. Можем ли мы реорганизовать его в более функционально? Может foldLeft бы помочь ...?
Some Name
3

голосов
2

ответ
74

Просмотры

Что это значит изменить локальную переменную из другого потока?

Я написал следующее простое приложение: объект Main расширяет App {вар v: Int = 0 вал т = новый Thread (() => v = 1) t.start () t.join () Println (v) // печатает 1 } дело в том, что я был смущен, что мы изменяем локальные переменные из другого потока ... И что модификация (сделанная другой нить) видна в основном потоке. Я думал, что локальные переменные всегда находятся в (стековой памяти дно указал на RSP регистр) стека. Я думал, что память стека выделяется для каждого потока в приложении. Upd: Даже если мы изменим приложение следующим образом печатает тот же: объект Main {Защиту основные (арг: Array [String]) = {вар v: Int = 0 вал т = новая тема (() => v = 1) t.start () t.join () Println (V) // печатает 1}}
Some Name
1

голосов
1

ответ
180

Просмотры

Python - подстроки, которые содержат только 'A', 'B' или 'C'

Я был кодирования для этой проблемы. Maggu только вступил играть в школу. Его учитель научил его, а, B, B, C, C. Он очень увлечен эти буквы, и теперь он ищет только те строки, которая содержит только эти буквы. Но, как я сказал, что он маленький парень он не может подсчитать количество таких подстрок в одиночку. Найти число таких строк. Защита подстрока (строка): по размеру в диапазоне (1, Len (строка) + 1): для индекса в диапазоне (LEN (строка) -размер + 1): строка Выхода [индекс: индекс + размер] L = [] для х в диапазоне (интермедиат (raw_input ())): l.append not_ = 'defghijklmnopqrstuvwxyz' для строки в л (raw_input () ниже ().): кол = 0 для подстрока в подстрок (строка): если все (письмо не в подстроке для письма в not_): кол-во = кол + 1 печать (счета), я понял, что мы можем свести задачу к нижнему регистру. Я' ве написал код, но он не эффективен для больших строк. И я имею в виду большие исключительно большие строки. Я понял, что это функция подстроки, которая занимает много времени. Как я могу уменьшить расход времени функции подстроки? Могу ли я заменить его с другим кодом? Благодарю.
Some Name

Просмотр дополнительных вопросов