Описание тега pass-by-name

13 ответов

Последствия только использования стека в C++

Допустим, я знаю парня, который плохо знаком с C++. Он не передает указатели (правильно), но он отказывается передавать по ссылке. Он всегда использует проход по значению. Причина в том, что он чувствует, что "передача объектов по ссылке является пр…
12 сен '10 в 14:15
2 ответа

Поименный параметр в Scala

Из книги "Программирование в Scala": var assertionsEnabled = true def myAssert(predicate: () => Boolean) = if (assertionsEnabled && !predicate()) throw new AssertionError myAssert(() => 5 > 3) Использование пустого списка параметров…
07 апр '18 в 12:46
1 ответ

Почему Scala зависает при оценке параметра по имени в Future?

Приведенный ниже (надуманный) код пытается напечатать параметр String по имени в будущем и вернуть его после завершения печати. import scala.concurrent._ import concurrent.ExecutionContext.Implicits.global import scala.concurrent.duration._ class Pr…
23 ноя '13 в 02:58
0 ответов

Коллекция Scala, которая принимает параметры передачи по имени

Существует ли такая коллекция? На данный момент код, который я имею, не компилируется: object pagerank { // TODO fixme val totalNodes: BigDecimal = 4 class Node(in: => List[Node], out: => List[Node]) { def rank: BigDecimal = { in.foldLeft(BigD…
15 апр '14 в 10:52
0 ответов

Что означает A => => B?

В другом вопросе я получил значение типа A => => B, Что это значит? Меня всегда заставляли понять, что => A на самом деле это не тип, а способ объявления аргумента для работы с семантикой вызова по имени. Но если это не тип, что делает A =&…
06 окт '15 в 11:27
9 ответов

Что такое "передача по имени" и как она работает?

Я проверил Википедию и погуглил, но все еще не могу понять, как работает логин в Алголе 60.
08 май '09 в 03:16
2 ответа

Как установить обработчик бездействия для параметра по имени?

Я определил метод treeNode создать узел, и который может иметь дочерние узлы. Упрощенный код: def treeNode(text:String) (children: => Any) { val b = new TreeNode(text) children } Когда я использую этот метод, я должен написать: treeNode("aaa") { …
08 янв '12 в 07:43
2 ответа

Передача Python по значению ссылки на объект

Я пытаюсь написать алгоритм на python, чтобы распечатать все пути от корня (двоичного) дерева до каждого листа. Вот мой код: def fb_problem(node, curr_trav): curr_trav = curr_trav + [node] if node.left is None and node.right is None: for path_node i…
31 мар '16 в 18:48
2 ответа

Python: передача параметров по имени вместе с kwargs

В Python мы можем сделать это: def myFun1(one = '1', two = '2'): ... Затем мы можем вызвать функцию и передать аргументы по их имени: myFun1(two = 'two', one = 'one') Также мы можем сделать это: def myFun2(**kwargs): print kwargs.get('one', 'nothing…
1 ответ

Запутанный тип ссылок на языке Go

Я пытался создать структуры данных Trie с помощью Go Language, но каким-то образом он застрял с проблемой ссылок, вот она. http://play.golang.org/p/ASSGF5Oe9R // Package main provides ... package main import "fmt" type RootTrie []Trie type Trie stru…
3 ответа

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

Я изучаю книгу "Функциональное программирование в Scala" и наткнулся на пример, который я не до конца понимаю. В главе о строгости / лени авторы описывают конструкцию потоков и имеют такой код: sealed trait Stream[+A] case object Empty extends Strea…
30 окт '14 в 21:01
1 ответ

C++ элегантный способ передачи (подмножество) опций в функцию

У меня есть функция, точное поведение которой контролируется набором флагов. Большинство из них обычно ложные. Наличие их всех в качестве параметров быстро становится очень грязным. Я мог бы создать перечисление для флагов: enum ParseFlags { assignm…
08 июн '17 в 15:16
2 ответа

Проход по реализации имени в C

Как я могу вычислить значение арифметического выражения ^2 + 3i - 1, которое зависит от индекса i , используя механизм передачи по имени в языке C 9∑ я ^2 + 3i - 1= 0 через вызов процедуры суммирования с аргументом (ами), переданными по имени Переда…
1 ответ

Используйте сохраненное значение в конструкторе суперкласса при расширении класса, принимающего параметр по имени

У меня есть случай, когда я хочу расширить класс, который принимает параметр по имени в своем конструкторе: class Extension(something: Something) extends Base(something.doSomething(something.getSomething(false)) class Base(expression: => Result) …
05 ноя '14 в 12:57
6 ответов

Звоните по ссылке, стоимости и имени

Я пытаюсь понять концептуальную разницу между вызовом по ссылке, стоимости и имени. Итак, у меня есть следующий псевдокод: foo(a, b, c) { b =b++; a = a++; c = a + b*10 } X=1; Y=2; Z=3; foo(X, Y+2, Z); Что такое X, Y и Z после вызова foo, если a, b и…
1 ответ

Оценка переменной через Pass By Name

У меня есть сомнения по поводу Pass By Name Procedure test ( int c, int d) { int k = 10; c = 5; d = d + 2 ; k = c + d; print (k); } main() { k = 1; test(k,k); print (k); } Я упоминал один из предыдущих вопросов о том, что такое передача по имени и к…
13 фев '14 в 01:57
2 ответа

По значению и по имени в scala => однозначное соответствие

Если при вызове по значению val f: (Int) => Int = {(i) => {i * i}} # f: Int => Int = <function1> это сокращение для val f: Function1[Int, Int] = {(i) => {i * i}} # f: Int => Int = <function1> тогда при звонке по имени val …
11 май '15 в 11:21
1 ответ

Параметры типа по имени

Представьте, что у меня есть следующее определение класса: class Foo[T] и я хочу сделать следующее def bar(x:Foo[ =>Int ]):Int = ??? Но компилятор не работает с "типом параметра по имени не допускается здесь" Как я могу использовать тип по имени …
16 ноя '12 в 12:00
1 ответ

Разница между вызовом по имени и вызовом по текстовому механизму передачи параметров с примерами

Из 5 типов механизмов передачи параметров: 1. передача по значению 2. передача по ссылке 3. передача по значению 4. передача по тексту (макросы на языке C) 5. передача по значению имя (что-то вроде продолжения) Я просто хочу разницу между последними…
26 июл '15 в 16:35
3 ответа

Определить по параметру, какой элемент изменить

Следующий код Scala дает ошибку компиляции, утверждая, что я не могу присвоить val: Упрощенный пример: class State { val a = 1 val b = 2 def compute( res: =>Int, add : Int ): Unit = { res = add + 123456 } compute(a,b) compute(b,a) } Пример ближе …