title: How to make a proper reactive extension on Eureka SelectableSection
body: <p>This is my first question to the StackOverflow community so excuse me if I'm doing something wrong.</p>
  <p><strong>1. What I'm trying to achieve</strong><br>
  Basically, I want to make a custom reactive wrapper around Eureka's <code>SelectableSection</code> class in order to observe the value of the selected row when it is changed. I'm thinking to get this data from the <code>onSelectSelectableRow</code> closure which is called every time a row is selected.</p>
  <p><strong>2. What I've tried to do for that</strong><br>
  Actually, I've got this working but it's not a generic use of the custom wrapper, here is the example that works but only when I specify the row and its value type, for example <code>ListCheckRow&lt;Int&gt;</code>.</p>
  <pre class="lang-swift prettyprint-override"><code>extension SelectableSection: ReactiveCompatible {}
  extension Reactive where Base : SelectableSection&lt;ListCheckRow&lt;Int&gt;&gt; {
    var selectedValue: Observable&lt;Base.SelectableRow.Cell.Value?&gt; {
      return Observable.create { observer in
        self.base.onSelectSelectableRow = {cell, row in
          observer.onNext(row.value)
        }
        return Disposables.create {
          observer.onCompleted()
        }
      }
    }
  }
  </code></pre>
  <p>This works fine and as I expected but when it comes to something more generic like the next code example, I get an error saying that: <strong>&quot;Cannot assign to property: 'base' is a 'let' constant&quot;</strong></p>
  <pre class="lang-swift prettyprint-override"><code>extension SelectableSection: ReactiveCompatible {}
  extension Reactive where Base : SelectableSectionType {
    var selectedValue: Observable&lt;Base.SelectableRow.Cell.Value?&gt; {
      return Observable.create { observer in
        self.base.onSelectSelectableRow = {cell, row in // Error: Cannot assign to property: 'base' is a 'let' constant
          observer.onNext(row.value)
        }
        return Disposables.create {
          observer.onCompleted()
        }
      }
    }
  }
  </code></pre>
  <p>Any help will be much appreciated, thanks. </p>