2016-09-28 2 views
1

Я смотрел по всему Интернету, чтобы узнать, что означает выражение ## в долото, но не может найти его нигде.Что означает выражение ## в долото?

Например, в этом фрагменте кода:

val ways = Module(new BRAM(log2Up(conf.lines), conf.ways * line_size)) 
val din = Vec.fill(conf.ways) { Bits(width=line_size) } 
if(conf.ways == 2) { 
    ways.io.din := din(1) ## din(0) 
} 

Что такое строка в операторе if-делать, используя ## выражение? Спасибо!

+1

Это просто вызов метода, как любой другой вызов метода. Вы можете найти метод '##' в документации любого типа 'din'. –

ответ

6

Поскольку вы не можете действительно использовать Google для символических символов, таких как #, вам нужно будет найти документацию для метода ## другим способом. Самый простой способ - просто навести на ## в вашей среде IDE и позволить ему отображать документ API. Если это невозможно, потому что ваша среда IDE не делает этого, или вы не загрузили документы API, вы можете найти документы для того класса, на который вызван метод, и посмотреть его там.

В этом случае вы звоните ## по телефону din(1). Поскольку din является вектором Bits, din(1) является объектом Bits. Таким образом, мы можем посмотреть на Bits классе в API Docs зубила и найти следующее на ##:

def ##(other: Bits): UInt 

возвращает этот провод сцепляется с other, где этим проводом является наиболее важной частью и other формы наименее значимым часть.

Ширина выходного сигнала - это сумма входов.

+1

Учитывая, что '##' также является методом в стандартной библиотеке Scala (определен в ['Any'] (http://scala-lang.org/api/current/index.html#[email protected]## (): Int), не менее), это кажется крайне неудачным выбором имени. Я имею в виду, действительно, вы называете метод со строкой случайных символов оператора и не можете даже сделать его уникальным? :-D –

Смежные вопросы